execute_block
EXECUTE BLOCK
Версии сервера
Firebird 2.0
Доступно в
Формат
EXECUTE BLOCK [ (inparam datatype = :<название параметра>, ...) ] [ RETURNS (outparam datatype, ...) } AS [DECLARE VARIABLE varparam datatype; ...] BEGIN ... END
inparam - входящие параметры
outparam - исходящие параметры
varparam - переменые доступные внутри блока
datatype - тип данных
Описание
функция позволяет выполнять набор PSQL команд без создания процедуры.
Поддерживает как входные так и выходные параметры.
Пример
EXECUTE block RETURNS (RESULT VARCHAR(30)) AS DECLARE variable vtest INTEGER; BEGIN UPDATE rdb$functions fr SET fr.rdb$function_name = fr.rdb$function_name WHERE 1 = 1; RESULT = 'Обновили '||ROW_COUNT||' записей'; suspend; UPDATE rdb$functions fr SET fr.rdb$function_name = fr.rdb$function_name WHERE fr.rdb$function_name = 'test'; RESULT = 'Обновили '||ROW_COUNT||' записей'; suspend; FOR SELECT fr.rdb$function_type FROM rdb$functions fr WHERE fr.rdb$function_name LIKE 'RDB$%' INTO :vtest do BEGIN END RESULT = 'Получили '||ROW_COUNT||' записей'; suspend; END
Или
EXECUTE block (pass1 VARCHAR(255) = :pass1) AS BEGIN IF (EXISTS (SELECT id FROM toptions2 WHERE name = 'dbpass')) THEN UPDATE TOPTIONS2 SET val = :pass1 WHERE name = 'dbpass'; ELSE INSERT INTO TOPTIONS2 (name, val) VALUES ('dbpass', :pass1); END
Источник
\doc\sql.extensions\README.execute_block.txt
execute_block.txt · Последнее изменение: 2012/02/03 12:00 (внешнее изменение)
Обсуждение