есть функция следующего вида:
CREATE OR REPLACE FUNCTION "public"."updaterest" (
"_new_id" integer,
"_id_apteka" character varying(8)
)
RETURNS integer AS
$body$
declare
zakaz integer;
begin
select _id_apteka from svodprice where id=_new_id into zakaz;
RETURN zakaz;
end;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;
при попытке пргона функции например: SELECT updaterest(5469,'apteka2');
должно выдаваться значение остатка в столбце apteka2 где id=5469.
Но почему то постгрес воспринимает запрос на селект вот так:
SELECT "apteka2" from svodprice where id=5469 into zakaz.
Естественно вываливается ошибка что zakaz не может принять тип STRING ("apteka2")
ТО есть почему то SQL воспринял apteka2 не как столбец из которого надо извлечь число,
а как просто текстовое выражение....
применение различных типов типа чар, текст к входному параметру apteka2 результата не изменили, различные преобразования в запросе тоже...
буду признателен за помощь.
проблема решилась: execute
проблема решилась:
execute 'select ' ||''|| cast(_id_apteka as varchar) || ' from svodprice where id='||cast(_new_id as varchar) into zakaz;
тема закрыта
а если так select
а если так
select s._id_apteka from svodprice s where id=_new_id into zakaz