Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по серверам.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
749 Кб
Скачать
☆

Функции

Для большинства функций используется следующий синтаксис:

имя функции(аргумент) или @@имя функции.

Например: @@TRANCOUNT возвращает число незавершенных транзакций

IF (@@TRANCOUNT>0)

BEGIN

RAISERROR (‘задание не может быть выполнено в транзакции’, 10,1)

RETURN

END

Оператор RAISERROR возвращает пользовательское сообщение об ошибке, позволяет пользователям получать записи из системной таблицы sysmessages или создавать сообщение динамически, на основе заданного пользователем уровня и кода ошибки.

Синтаксис:

RAISERROR({код ошибки|символьная строка} уровень ошибки, состояние). Сообщение об ошибке можно стандартизировать и использовать многократно. Для этого сообщение следует определить в БД. Синтаксис включения сообщения в БД:

Sp_addmessage код сообщения, код важности, текст сообщения[,язык[FALSE|TRUE],REPLACE]]]

Флаг FALSE|TRUE определяет, должно ли сообщение записываться в журнал ошибок. REPLACE заменяет существующее сообщение с указанным кодом.

Функция @@ROWCOUNT возвращает количество строк, измененных последним запросом.

Например:

UPDATE STAFF SET LastName = ‘Иванов’

WHERE LastName = ‘Иванков’

IF(@@ROWCOUNT=0)

BEGIN

PRINT ‘Внимание : Ни одна запись не была изменена’

RETURN

END

Операторы TRANSACT-SQL могут выполняться разными способами: по одному, пакетами, в составе хранимых процедур или триггеров, как сценарии.

Пакет – это набор операторов TRANSACT-SQL, одновременно передаваемых SQL –серверу и выполняемых как единая группа. Пакеты выполняются интерактивно или в составе сценария. Пакеты являются основой для программ SQL Server. Пакет содержит одну или несколько команд SQL. Команды пакета анализируются, компилируются и выполняются как единая группа. Если вызов хранимой процедуры не является первой командой пакета, перед именем процедуры должно стоять ключевое слово EXEC.

    1. Создание хранимых процедур

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

Для создания хранимой процедуры используется оператор SQL CREATE PROCEDURE.

Синтаксис:

CREATE PROCEDURE <имя процедуры> (@<имя перем1> <тип данных>, @<имя перем2> <тип данных>…)

[@параметр тип данных[=значение по умолчанию] [OUTPUT]

[WITH

{ RECOMPILE

|ENCRYPTION

|RECOMPILE,ENCRYPTION}]

[FOR REPLICATION]

AS <тело процедуры>

Ключевое слово RECOMPILE определяет режим компиляции. Если RECOMPILE задано, то процедура будет перекомпилироваться всякий раз, когда она будет передаваться на выполнение (план выполнения не кэшируется, при каждом выполнении создается новый план). Ключевое слово ENCRYPTION определяет режим, при котором исходный текст хранимой процедуры не сохраняется в БД. Кроме имени все остальные параметры являются необязательными.

Каждая хранимая процедура компилируется при первом выполнении. Описание процедуры совместно с планом ее работы хранится в системных таблицах БД.