48 Создание, модификация и удаление хранимых процедур средствами T-SQL.
CREATE PROC[EDURE] procedure_name [;number]
[ {^parameter data_type} [VARYING] [= default] [OUTPUT] ] [,...n]
[WITH
{ RECOMPILE
| ENCRYPTION
| RECOMPILE. ENCRYPTION } ]
[FOR REPLICATION]
AS
sql_statement [...n]
procedure_name — имя создаваемой процедуры. Используя префиксы sp_, # и ##, можно определить создаваемую процедуру как системную или временную.
number — параметр определяет идентификационный номер хранимой процедуры, однозначно определяющий ее в группе процедур;
(^parameter — определяет имя параметра, который будет использоваться создаваемой хранимой процедурой для передачи входных или выходных данных.
OUTPUT — использование этого ключевого слова определяет указанный параметр как выходной;
VARYING — ключевое слово, которое используется совместно с параметром, относящимся к типу данных cursor. Определяет, что в качестве выходного параметра будет представлено результирующее множество;
RECOMPILE — ключевое слово, предписывающее системе создавать план выполнения процедуры при каждом ее вызове;
FOR REPLICATION — процедура, определенная с использованием данного ключевого слова, предназначена исключительно для осуществления процесса репликации.
ENCRYPTON — если при определении процедуры было использовано данное ключевое слово, то текст процедуры непосредственно перед записью в системную таблицу syscomments будет зашифрован.
AS — ключевое слово, определяющее начало кода хранимой процедуры.
В момент создания хранимой процедуры система осуществляет только проверку синтаксиса команд. Проверка правильности ссылок производится только в процессе компиляции хранимой процедуры, которая выполняется непосредственно перед ее выполнением.
Чтобы модифицировать хранимую процедуру:
ALTER PROC[EDURE] procedure_name [;number]
[ {©parameter data_type } [VARYING] [= default] [OUTPUT] ] [,...n]
[WITH
{ RECOMPILE
| ENCRYPTION
j RECOMPILE . ENCRYPTION} ]
[FOR REPLICATION]
AS
sql_statement [...n]
Параметры этой команды полностью идентичны аналогичным параметрам команды CREATE PROCEDURE.
DROP PROCEDURE {procedure} [,...n]