Функция с входным параметром - имя столбца в таблице, не хочет работать.

есть функция следующего вида:
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

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023