Форум: "Базы";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
ВнизIB 7.5 Напомните синтаксис использования функции в UPDATE запросе Найти похожие ветки
← →
novill © (2006-12-25 12:37) [0]update TABLE1 set
field1=MYFUNC(uid)
where uid in ...
Давно не работал - забыл (
Функция объявлена
CREATE PROCEDURE MYFUNC(
UID INTEGER
RETURNS (
RES DOUBLE PRECISION)
AS
begin
select ... into :RES;
suspend;
end^
и при отдельном вызове выполняется, а в запросе получаю ошибку Function unknown.
ЗЫ поле по типу подходит.
← →
Desdechado © (2006-12-25 12:40) [1]Это не функция, а процедура.
Причем возвращающая набор данных. Так что какой апдейт?
← →
novill © (2006-12-25 12:50) [2]> [1] Desdechado © (25.12.06 12:40)
> не функция, а процедура
запрос всегда возвращает одну запись с одним полем,
Как сделать апдейт, если в теле процедуры будет написано:RES=...;
← →
atruhin © (2006-12-25 13:13) [3]Никак. Перенести update в процедуру.
← →
Desdechado © (2006-12-25 14:01) [4]SUSPEND принуждает возвращать набор данных, пусть даже из одной строки с одним полем.
Можно попробовать:UPDATE x
SET y = (SELECT z FROM proc(a))
WHERE a ...
Но не помню, прокатит ли в FB.
← →
novill © (2006-12-25 14:42) [5]сделал через
for select ... do
begin
результат процедуры в переменную
update ... //из переменной в поле
end
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c