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

24) Сценарии

Сценарий – набор операторов SQL, сохраненный в файле.

В общем случае сценарий пишется для решения от начала до конца какой-то определенной задачи.

Сценарий рассматривается как единое целое и выполняется целиком. В сценарии могут присутствовать системные функции, локальные переменные, операторы языка.

Объявление переменных

DECLARE @<имя_переменной> <тип_переменной> [,…]

После объявления переменной её значение будет равно null до тех пор, пока её не будет присвоенозначение.

Для присвоения значений используются операторы SET и SELECT.

SET используется в случае, если переменной присваивается известное на момент операции значение или же одной переменной присваевается значение другой.

Select – когда переменной необходимо присвоить результат выполнения запроса. Print выводить текстовую информацию.

Системные функции

Оператор select @<имя_переменной> позволяет вывести значение переменной.

Системные функции.

Существует около 30 сист. Ф. без параметров

@@identity – возвращает последнее identity-значение, которое было вставлено в результате последнего оператора вставки. Оператор изменяется сразу же после очередного insert оператора, если этот оператор применяется к таблице, в которой нет identity столбца, тогда его значение null.

@@error –возвращает номер ошибки последнего оператора SQL, выполненного в текущем подключении. При отсутствии ошибки возвращает 0.

@@rowcount – возвращает число строк, полученных в результате выполнения последнего оператора. Присваивается новое значение каждый раз, когда выполняется очередной оператор.

Пакеты

Пакет(batch) – это несколько, объединенных в одну логическую группу операторов t-sql. Все операторы в рамках пакета комбинируются в единый план исполнения т.о., что пока все операторы не будут успешно проанализированны синтаксическим образом, ни один из операторов пакета не будет исполняться. Однако, это не гарантирует того, что ошибки не возникнут во время выполнения программы. В случае возникновения ошибки, все операторы, выполненные до ошибки, останутся выполненными.

Для разделения сценария на отдельные пакеты используется оператор GO.(должен находиться на отдельной строке, не является командой t-sql, его распознают только утилиты с командным интерфейсом SQL server). Каждый пакет обрабатывается отдельно, поэтому ошибка в одном пакете, не мешает выполнению другого пакета.

Пакеты используются:

Для задания предшествования

Операторы, требующие создания отдельного пакета

Create default, procedure, rule, trigger, view

Управляющие конструкции SQL

Язык SQL является непроцедурным, но тем не менее в среде SQL Server предусмотрен ряд различных управляющих конструкций, без которых невозможно написание эффективных алгоритмов.

Группировка двух и более команд в единый блок осуществляется с использованием ключевых слов BEGIN и END:

<блок_операторов>::=BEGIN { sql_оператор | блок_операторов }END Сгруппированные команды воспринимаются интерпретатором SQL как одна команда. Подобная группировка требуется для конструкций поливариантных ветвлений, условных и циклических конструкций. Блоки BEGIN...END могут быть вложенными.

Некоторые команды SQL не должны выполняться вместе с другими командами (речь идет о командах резервного копирования, изменения структуры таблиц, хранимых процедур и им подобных), поэтому их совместное включение в конструкцию BEGIN...END не допускается.

Нередко определенная часть программы должна выполняться только при реализации некоторого логического условия. Синтаксис условного оператора показан ниже:

<условный_оператор>::=IF лог_выражение { sql_оператор | блок_операторов } [ ELSE {sql_оператор | блок_операторов } ]

Циклы организуются с помощью следующей конструкции:

<оператор_цикла>::=WHILE лог_выражение { sql_оператор | блок_операторов } [ BREAK ] { sql_оператор | блок_операторов } [ CONTINUE ] Цикл можно принудительно остановить, если в его теле выполнить команду BREAK. Если же нужно начать цикл заново, не дожидаясь выполнения всех команд в теле, необходимо выполнить команду CONTINUE.

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

<оператор_поливариантных_ветвлений>::=CASE входное_значение WHEN {значение_для_сравнения | лог_выражение } THEN вых_выражение [,...n] [ ELSE иначе_вых_значение ] END Если входное значение и значение для сравнения совпадают, то конструкция возвращает выходное значение. Если же значение входного параметра не найдено ни в одной из строк WHEN...THEN, то тогда будет возвращено значение, указанное после ключевого слова ELSE.

Динамический sql

Sql server предоставляет возможность формировать sql-операторы на лету, манипулируя кодом в строке. Это используется тогда, когда мы не знаем каких-либо деталей до момента запуска запроса.

Exec[ute] ({<строчная_переменная>|<константа_командной строки>})

Declare @TableName varchar(50)

Set @tablename=‘Customers’

Exec(‘Select * from’+@tablename)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]