Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
2-1172510878
tipman
2007-02-26 20:27
2007.03.18
Выключить кнопку в toolbar, приложение не моё!!!


2-1172487297
Bogdan1024
2007-02-26 13:54
2007.03.18
АКФ


15-1172118410
TAHAT
2007-02-22 07:26
2007.03.18
Документация по FireBird, FIBPlus, FastReport


15-1172315589
vasIZmax
2007-02-24 14:13
2007.03.18
Боевое крещение...


2-1171997463
ElectriC
2007-02-20 21:51
2007.03.18
Vista & Delphi




   Наверх