Книга: Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Разделители в хранимых процедурах
Разделители в хранимых процедурах
Обратите внимание, что оператор внутри процедуры заканчивается точкой с запятой (;). Как известно, точка с запятой является стандартным разделителем команд в SQL - она является сигналом интерпретатору SQL, что текст команды введен полностью и надо начинать его обрабатывать. Не получится ли так, что, обнаружив точку с запятой в середине ХП, интерпретатор SQL сочтет, что команда введена полностью и попытается выполнить часть хранимой процедуры? Это предположение не лишено смысла. Действительно, если создать файл, в который записать вышеприведенный пример, добавить команду соединения с базы данных и попытаться выполнить этот SQL-скрипт с помощью интерпретатора isql, то будет возвращена ошибка, связанная с неожиданным, по мнению интерпретатора, окончанием команды создания хранимой процедуры. Если создавать хранимые процедуры с помощью файлов SQL-скриптов, без использования специализированных инструментов разработчика InterBase, то необходимо перед каждой командой создания ХП (то же относится и к триггерам) менять разделитель команд скрипта на другой символ, отличный от точки с запятой, а после текста ХП восстанавливать его обратно. Команда isql, изменяющая разделитель предложений SQL, выглядит так:
SET TERM <new_term><old_term>
Для типичного случая создания хранимой процедуры это выглядит так:
SET TERM ^;
CREATE PROCEDURE some_procedure
... . .
END
^
SET TERM ;^
- Повышение производительности приложений с помощью хранимых процедур
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- РАЗДЕЛИТЕЛИ
- Работа с массивами в хранимых процедурах
- Запуск хранимых процедур в окне программы SQL Query Analyzer
- Разделители
- Односимвольные разделители
- Преимущества использования хранимых процедур
- Создание хранимых процедур
- Расширенные возможности языка хранимых процедур InterBase
- Выполнение хранимых процедур с помощью DbCommand
- Создание и запуск хранимых процедур