Инструменты пользователя

Инструменты сайта


create_procedure

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
create_procedure [2009/08/05 11:16]
afgm Форматирование раздела "Формат"
create_procedure [2009/08/05 10:26] (текущий)
Строка 1: Строка 1:
 +====== 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 ^
 +|  ?  |  ?  |  +  |  +  |  +  |  +  |  +  |  +  |  +  |  +  |  +  |
 +
 +===== Формат =====
 +<​code>​
 +CREATE [OR ALTER] PROCEDURE <имя хранимой процедуры>​
 +[(<​список входных параметров>​)]
 +[RETURNS (<​список выходных параметров>​)]
 +AS
 +[<​список объявления переменных>​]
 +BEGIN <​блок операторов>​ END;
 +
 +<​список входных параметров>​ ::=
 +(<​описание параметра>​ [= <​значение по умолчанию>​]
 +[, <​описание параметра>​ [= <​значение по умолчанию>​]]...)
 +
 +<​список выходных параметров>​ ::= (<​описание параметра>​
 +[, <​описание параметра>​]...)
 +
 +<​описание параметра>​ ::= <имя параметра>​
 +{ <тип данных>​
 +| <имя домена>​
 +| TYPE OF <имя домена>​
 +} [COLLATE <​порядок сортировки>​]
 +
 +<​список объявления переменных>​ ::=
 +<​объявление локальной переменной>​
 +[<​объявление локальной переменной>​] ...
 +
 +<​объявление локальной переменной>​ ::=
 +DECLARE [VARIABLE]
 +{ <имя локальной переменной>​
 +{ <тип данных>​
 +| <имя домена>​
 +| TYPE OF <имя домена>​
 +} [COLLATE <​порядок сортировки>​]
 +| <имя курсора>​ CURSOR FOR (<​оператор SELECT>)
 +};
 +</​code>​
 +
 +===== Описание =====
 +Оператор CREATE OR ALTER PROCEDURE позволяет создать новую хранимую процедуру,​ если процедура с тем же именем отсутствует в базе данных. Если такая процедура уже существует,​ то происходит ее замена на новую.
 +
 +Хранимую процедуру может создать любой пользователь,​ соединившийся с базой данных.
 +
 +Имя хранимой процедуры может содержать до 31 символа и должно быть уникальным среди имен хранимых процедур базы данных,​ таблиц и представлений.
 +
 +Хранимой процедуре от вызвавшей программы могут передаваться входные параметры. Параметры передаются по значению,​ то есть любые изменения значений входных параметров никак не влияют на значения этих параметров в вызвавшей программе. Входным параметрам может присваиваться значение по умолчанию. Параметры,​ для которых заданы значения по умолчанию,​ должны располагаться в самом конце списка. Если входной параметр основан на домене,​ которому также задано значение по умолчанию в предложении DEFAULT, то новое значение по умолчанию перекрывает указанное при описании домена.
 +
 +Хранимая процедура может возвращать вызвавшей программе произвольное количество выходных параметров.\\
 +Если при описании параметра,​ локальной переменной процедуры указано имя домена,​ то для него копируются все характеристики этого домена. Если в описании присутствует предложение TYPE OF, то для переменной копируется только тип данных домена.
 +
 +В теле хранимой процедуры может быть описано произвольное количество локальных переменных.\\
 +После описания локальных переменных в теле хранимой процедуры следует блок операторов,​ заключенных в операторные скобки BEGIN и END.
 +
 +:!: Вместо CREATE OR ALTER PROCEDURE можно использовать RECREATE PROCEDURE.
 +
 +===== Пример =====
 +<code sql>
 +  RECREATE PROCEDURE SUMM (
 +     A INTEGER,
 +     B INTEGER
 +  )
 +  RETURNS(C INTEGER)
 +  AS
 +  BEGIN
 +    c = a + b;
 +    SUSPEND;
 +  END
 +</​code>​
 +
 +Процедура возвращает сумму двух чисел - a и b. Оператор SUSPEND служит для приостановки выполнения программы и выдачи результата.
 +===== См. также =====
 +[[DROP PROCEDURE]],​ [[EXECUTE PROCEDURE]],​ [[SELECT]], [[DECLARE VARIABLE]].
  
create_procedure.txt · Последние изменения: 2009/08/05 10:26 (внешнее изменение)