Execute statement и параметры

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

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

Ответить
andrey tretyakov
Сообщения: 1
Зарегистрирован: 16 янв 2006, 09:36

Execute statement и параметры

Сообщение andrey tretyakov » 16 янв 2006, 10:43

Захотел сделать вычисление кой-чего по формуле, передаваемой параметром.

Набросал следующее:

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

CREATE PROCEDURE SP_RESULT2 (
    D float,
    C float,
    R float,
    P float,
    T float,
    FORMULA VARCHAR(255))
RETURNS (
    RESULT float
)
AS
begin

    execute statement 'select cast('||formula||' as float) from rdb$database ' into :result;
    suspend;
end
Вызов:
select * from sp_result2(1,2,3,4,5,'1+2')
работает
А
select * from sp_result2(1,2,3,4,5,'D+C')
или
select * from sp_result2(1,2,3,4,5,':D+:C')
не работает.

Как в execute statement сделать вычисление с переданными параметрами в процедуру?

Вопрос чисто академический, потому как задачу я все равно уже решил, хотя и чуть другим путем.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 16 янв 2006, 13:18

Никак. Строка для EXECUTE STATEMENT не может содержать параметры. И работает она не в контексте процедуры, так что обращения к пременным тоже невозможны.

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

Сообщение kdv » 16 янв 2006, 16:14

и кстати, про float доку посмотри.

Ответить