Проблема в создании и вызове функций и процедур в postgresql
Таблица создана,данными заполнена,необходимо реализовать примитивную функцию подсчета строк в данной таблице.Вот,какая у меня функция получилась
CREATE OR REPLACE FUNCTION count_str(varchar v ) RETURNS bigint AS $$
BEGIN
select count(*) from v;
END;
$$ LANGUAGE plpgsql;
не получается ее вызвать,хотя возможно и создана она неправильно,вот так вызываю:
SELECT * from count_str("something");
something - имя таблицы.
При вызове пишет "столбец "something" не существует"
Ответы (2 шт):
Автор решения: SmellyNS
→ Ссылка
Ваша функция возвращает bigint, но вы пытаетесь обратиться к ней, как к таблице.
То есть ваше обращение эквивалентно следующей строке:
select * from 5
Попробуйте что-то похожее:
CREATE OR REPLACE FUNCTION count_str(@v table) RETURNS bigint AS $$
BEGIN
declare @ret bigint;
select @ret = count(*) from @v
return @ret;
END;
Select count_str(tablename);
Автор решения: Aziz Umarov
→ Ссылка
Поробуйте
CREATE OR REPLACE FUNCTION count_str(v varchar) RETURNS bigint AS $$
DECLARE
res_count BIGINT;
BEGIN
EXECUTE 'select count(*) from ' || v INTO res_count;
RETURN res_count;
END;
$$ LANGUAGE plpgsql;
вызвать
SELECT * from count_str("something");