Страница 1 из 1

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

Добавлено: 16 янв 2006, 10:43
andrey tretyakov
Захотел сделать вычисление кой-чего по формуле, передаваемой параметром.

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

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

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 сделать вычисление с переданными параметрами в процедуру?

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

Добавлено: 16 янв 2006, 13:18
Dimitry Sibiryakov
Никак. Строка для EXECUTE STATEMENT не может содержать параметры. И работает она не в контексте процедуры, так что обращения к пременным тоже невозможны.

Добавлено: 16 янв 2006, 16:14
kdv
и кстати, про float доку посмотри.