Страница 1 из 1
Параметр хранимой процедура в виде хранимой процедуры???
Добавлено: 16 май 2010, 11:40
ERrorMAKros
Добрый день, есть такая вот простая процедура:
Код: Выделить всё
CREATE PROCEDURE MYPROC(NUM INTEGER)
RETURNS (RET INTEGER)
AS BEGIN
RET=:NUM+10;
SUSPEND;
END
При обычной выборке результата в select все как обычно
Код: Выделить всё
select res.RET from MYPROC(20) res
/* в ответ получим колнуку "B" со значением 30 */
А как в качестве параметра процедуры MYPROC указать другую процедуру? ...что-то типа:
Код: Выделить всё
select res.RET from MYPROC(MYPROC(20)) res
/* процедура MYPROC должна получить входной результат MYPROC(20)*/
Re: Параметр хранимой процедура в виде хранимой процедуры???
Добавлено: 16 май 2010, 15:09
kdv
нужно определиться, одно значение из процедуры предполагается получать, или множество. Если одно, то тогда процедуру нужно вызывать как
execute procedure ... returning values, и не писать в ней suspend. Если множество, то тогда не просто select, а for select.
Читайте
http://www.ibase.ru/devinfo/sp_call.htm
Re: Параметр хранимой процедура в виде хранимой процедуры???
Добавлено: 16 май 2010, 23:38
ERrorMAKros
Спасибо, это понятно. Я имел в виду как в параметре процедуры вызвать результат работы др. процедуры, если это возможно?! Имеется в виду - позволяет ли sql синтаксис выполнить процедуру в качестве функции?
Пытался сделать так:
Код: Выделить всё
select res.RET from MYPROC(
select first 1 r.RET from MYPROC2(20) r
) res
Получаю в ответ:
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, column 4.
select.
Re: Параметр хранимой процедура в виде хранимой процедуры???
Добавлено: 17 май 2010, 09:39
ERrorMAKros
Решение оказалось таким:
Код: Выделить всё
select res.RET from MYPROC(
(select first 1 r.RET from MYPROC2(20) r)
) res
Re: Параметр хранимой процедура в виде хранимой процедуры???
Добавлено: 17 май 2010, 10:14
kdv
это еще зависит от версии сервера. раньше были сложности с передачей выражений в параметры.
Вообще конструкция, которая получилась, выглядит слишком замудренно. Может, имеет смысл вовремя остановиться?

Re: Параметр хранимой процедура в виде хранимой процедуры???
Добавлено: 17 май 2010, 10:35
ERrorMAKros
Такого рода решения будут крайне редко применяться на практике. Данный вопрос был скорее - разбором спецификаций синтаксиса языка Firebird SQL, чем жизненно необходимым решением какой то поставленной для программиста задачи
