Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие.doc
Скачиваний:
57
Добавлен:
14.05.2015
Размер:
1.51 Mб
Скачать

6. Операторы print и raiserror

Оператор PRINT – с помощью этого оператора можно вызвать сообщение в обработчик сообщений клиента. Сообщение может иметь длину до 1024 символов. Синтаксис оператора PRINT:

PRINT ‘любой ASCII текст’ | @локальная_переменная | @@ FUNCTION | строковое_выражение

При выводе на печать значения локальной или глобальной переменной его с начало нужно преобразовать в тип CHAR или VARCHAR.

Оператор RAISERROR – устанавливает системный при­знак SQL Server, чтобы обозначить факт возникновения ошибки и посылает сообщения об ошибке клиенту.

Синтаксис оператора:

RAISERROR ({Номер сообщения | Строка_сообщения}, серьезность, состояние [, аргумент1 [, аргумент 2]])

[WITH (LOG | NOWAIT | SETERROR)]

Опция WITH LOG используется для записи сообщений об ошибках в журнал ошибок SQL Server и журнал приложений Windows NT.

Комментарии в хранимой процедуре начинаются и закан­чиваются символами /*….*/, можно использовать также друге стили: ** или _ _.

7. Использование параметров в хранимых процедурах

Система передачи параметров позволяет писать более гиб­кие хранимые процедуры, поскольку значения параметров опре­деляются в момент вызова процедуры, а не во время её компиля­ции. В результате значения параметров могут изменяться при каждом запуске хранимой процедуры. Имена параметров начи­наются с символа @. Параметры могут быть входными и выход­ными

Входные параметры используются для передачи значе­ний в хранимую процедуру. Входные параметры имеют следую­щий синтаксис:

CREATE PROC Имя процедуры @параметр1 тип_данных,…

@ параметр N тип_данных

Пример:

CREATE PROC usp_input @ temp_name VARCHAR (30),

@ total INT,

@ current_date DATETIME

Передавать значения в хранимую процедуру можно раз­личными способами. Синтаксис стандартного способа передачи значений:

EXEC usp_input ‘Spenik & Sledge’, 1000, ‘03/25/96’

Вместо передачи по значениям можно организовать пере­дачу данных с помощью других переменных (того же типа):

EXEC usp_input @authоrs_name, @new_total, @my_dame

Еще один способ передачи параметров – использование имен параметров, в этом случае порядок параметров может быть любой. Однако, если для одного из параметров использовано имя, то и для всех следующих параметров нужно применять имена:

EXEC usp_input @ total=1000,

@ temp_name = ‘Spenik & Sledge’

@ current_date =’03/25/36’

Входные параметры могут иметь стандартные значения (они действуют по умолчанию). Для присвоения стандартного значения входному параметру используется синтаксис:

@ имя_параметра тип_данных = стандартное_значение

Если процедура вызывается без проверки параметра, будет использовано его стандартное значение.

Для использования входного параметра в хранимой про­цедуре достаточно сослаться на его имя.

Если при вызове процедуры значения параметров явно не указываются, и для этих параметров отсутствуют стандартные значения, таким параметрам присваивается значение NULL. Если хранимая процедура используется для вставки данных (INSERT), причем данные зависят от входных параметров, эти параметры не могут быть пустыми значениями.

Выходные параметры используются для возврата значе­ний клиентскому приложению из хранимой процедуры. Синтак­сис объявления выходного параметра выглядит таким образом:

CREATE PROCEDURE имя_процедуры @имя_параметра тип_данных OUT[PUT]

Пример:

CREATE PROCEDURE usp_test @p1 INT OUT

Чтобы вызвать процедуру с выходным параметром, нужно объявить переменную для хранения возвращаемого значе­ния (эта переменная может иметь имя, отличное от выходного параметра).

При вызове процедуры необходимо указать ключевое слово OUT (OUTPUT), например:

EXEC usp_test @V1 OUT

После выполнения процедуры значение выходного пара­метра @V1 можно использовать для дальнейшей обработки. При работе с выходными параметрами также можно использовать их имена.