Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IB 7.5 Напомните синтаксис использования функции в UPDATE запросе


novill ©   (2006-12-25 12:37:00) 

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.

ЗЫ поле по типу подходит.


novill   (2006-12-25 14:42:00) [1]

сделал через
for select ... do
begin
 результат процедуры в переменную
 update ... //из переменной в поле
end


Desdechado   (2006-12-25 14:01:00) [2]

SUSPEND принуждает возвращать набор данных, пусть даже из одной строки с одним полем.
Можно попробовать:
UPDATE x
 SET y = (SELECT z FROM proc(a))
 WHERE a ...

Но не помню, прокатит ли в FB.


atruhin   (2006-12-25 13:13:00) [3]

Никак. Перенести update  в процедуру.


novill   (2006-12-25 12:50:00) [4]

> [1] Desdechado ©   (25.12.06 12:40)
> не функция, а процедура

запрос всегда возвращает одну запись с одним полем,

Как сделать апдейт, если в теле процедуры будет написано

:RES=...;


Desdechado   (2006-12-25 12:40:00) [5]

Это не функция, а процедура.
Причем возвращающая набор данных. Так что какой апдейт?


Наверх

Титульная страница Поиск, карта сайта Написать письмо