CREATE PROCEDURE
Версии сервера
0.9 | 1.0 | 1.5.3 | 1.5.4 | 1.5.5 | 2.0 | 2.0.3 | 2.0.4 | 2.1 | 2.5 | 3.0 |
---|---|---|---|---|---|---|---|---|---|---|
? | ? | + | + | + | + | + | + | + | + | + |
Формат
CREATE [OR ALTER] PROCEDURE <имя хранимой процедуры> [(<список входных параметров>)] [RETURNS (<список выходных параметров>)] AS [<список объявления переменных>] BEGIN <блок операторов> END; <список входных параметров> ::= (<описание параметра> [= <значение по умолчанию>] [, <описание параметра> [= <значение по умолчанию>]]...) <список выходных параметров> ::= (<описание параметра> [, <описание параметра>]...) <описание параметра> ::= <имя параметра> { <тип данных> | <имя домена> | TYPE OF <имя домена> } [COLLATE <порядок сортировки>] <список объявления переменных> ::= <объявление локальной переменной> [<объявление локальной переменной>] ... <объявление локальной переменной> ::= DECLARE [VARIABLE] { <имя локальной переменной> { <тип данных> | <имя домена> | TYPE OF <имя домена> } [COLLATE <порядок сортировки>] | <имя курсора> CURSOR FOR (<оператор SELECT>) };
Описание
Оператор CREATE OR ALTER PROCEDURE позволяет создать новую хранимую процедуру, если процедура с тем же именем отсутствует в базе данных. Если такая процедура уже существует, то происходит ее замена на новую.
Хранимую процедуру может создать любой пользователь, соединившийся с базой данных.
Имя хранимой процедуры может содержать до 31 символа и должно быть уникальным среди имен хранимых процедур базы данных, таблиц и представлений.
Хранимой процедуре от вызвавшей программы могут передаваться входные параметры. Параметры передаются по значению, то есть любые изменения значений входных параметров никак не влияют на значения этих параметров в вызвавшей программе. Входным параметрам может присваиваться значение по умолчанию. Параметры, для которых заданы значения по умолчанию, должны располагаться в самом конце списка. Если входной параметр основан на домене, которому также задано значение по умолчанию в предложении DEFAULT, то новое значение по умолчанию перекрывает указанное при описании домена.
Хранимая процедура может возвращать вызвавшей программе произвольное количество выходных параметров.
Если при описании параметра, локальной переменной процедуры указано имя домена, то для него копируются все характеристики этого домена. Если в описании присутствует предложение TYPE OF, то для переменной копируется только тип данных домена.
В теле хранимой процедуры может быть описано произвольное количество локальных переменных.
После описания локальных переменных в теле хранимой процедуры следует блок операторов, заключенных в операторные скобки BEGIN и END.
Вместо CREATE OR ALTER PROCEDURE можно использовать RECREATE PROCEDURE.
Пример
RECREATE PROCEDURE SUMM ( A INTEGER, B INTEGER ) RETURNS(C INTEGER) AS BEGIN c = a + b; SUSPEND; END
Процедура возвращает сумму двух чисел - a и b. Оператор SUSPEND служит для приостановки выполнения программы и выдачи результата.
Обсуждение