Использование созданых процедур в select-е

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Bagdat
Сообщения: 19
Зарегистрирован: 12 апр 2005, 12:50

Использование созданых процедур в select-е

Сообщение Bagdat » 25 май 2005, 16:33

Добрый день.
Подскажите каким образом можно использовать созданую мной процедуру в selecte.
Например:Select созданая_процедура(поле) from таблица.
в таком виде у меня ругается.

Ошибка
can't format message 13:196 -- message file C:\Distr\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
FORMULA_SALARY_EXECUTE.

Данилов Юрий
Сообщения: 31
Зарегистрирован: 27 окт 2004, 11:56

Re: Использование созданых процедур в select-е

Сообщение Данилов Юрий » 25 май 2005, 16:49

Bagdat писал(а):Например:Select созданая_процедура(поле) from таблица.
в таком виде у меня ругается.
.......
SQL error code = -804.
Function unknown.
FORMULA_SALARY_EXECUTE.
В SELECTе ты должен использовать свою процедуру вместо таблицы. Это не освобождает тебя от обязанности писать, что ты селектишь из процедуры. Должно быть:

Код: Выделить всё

SELECT f1[,f2,f3...]
FROM MySavedProc(Parameters)
А то, что ты написал, заставляет сервер думать, что созданная_процедура - это функция, и искать ее описание среди описаний UDF.

Bagdat
Сообщения: 19
Зарегистрирован: 12 апр 2005, 12:50

Сообщение Bagdat » 25 май 2005, 16:55

мне нужно что бы парметр в процедуру передовался select-ом.Я это делала раньше но забыл как но точно помню что можно.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 25 май 2005, 17:15

тогда вспоминай :)

а может, все таки приснилось?

Bagdat
Сообщения: 19
Зарегистрирован: 12 апр 2005, 12:50

Сообщение Bagdat » 25 май 2005, 17:22

Все не помню как в прошлый раз в этот раз сделал
SELECT tabnum,(select res FROM formula_salary(s.tabnum)) as res from sp_mol s все получилось.
Всем спасибо за участие.

MuirsheenDurkin
Сообщения: 44
Зарегистрирован: 21 янв 2005, 10:18

Сообщение MuirsheenDurkin » 25 май 2005, 17:51

Bagdat писал(а):мне нужно что бы парметр в процедуру передовался select-ом.Я это делала раньше но забыл как но точно помню что можно.
Не, ну разные есть варианты
например,


select
t.field1,
(select out_param from stored_proc(t.field2))
from
table t

если процедура возвращает не более одной записи.

можно и наоборот.

select
out_param
from
stored_proc((select field from table where ....))

опять же если внутренний подзапрос отбирает не более одной записи.

Ответить