Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Метод указания AIS

.pdf
Скачиваний:
8
Добавлен:
18.02.2016
Размер:
9.86 Mб
Скачать

1.В панели инструментов анализатора запросов Query Analyzer нажмите кнопку New Query (Новый запрос). Query Analyzer откроет новое окно Query (Запрос).

2.Введите

3.В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить сценарий). Поскольку локальная временная таблица не доступна в новом сеансе запроса, анализатор запросов Query Analyzer отобразит сообщение об ошибке.

КАТУ

К.Т.Н. ОМАРБЕКОВА А.С.

Используйте глобальную временную таблицу из другого сеанса

1. Введите СУБД

В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить запрос). Поскольку глобальная временная таблица доступна в новом сеансе запроса, анализатор запросов Query Analyzer отобразит результат.

2.Закройте два открытых окна запроса Query, но одно оставьте открытым для сохранения соединения с сервером. Если будет предложено сохранить изменения, нажмите No (Нет).

Переменные

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

131

Например,

Понятие о переменных

Переменные обозначаются префиксом @; например @MyVariable. Как и временные таблицы, переменные имеют две области действия: локальную и глобальную. Глобальные переменные обозначаются двойным символом @: @@VERSION.

Имеется несколько различий между переменными и временными таблицами. Все глобальные переменные определяются SQL Server; вы не можете определить их самостоятельно. Кроме того, область действия локальных переменных еще уже, чем у локальных таблиц: они доступны только в пределах пакета или процедуры, в которой они объявлены.

Локальные переменные

Локальные переменные создаются с помощью оператора DECLARE, который имеет следующий синтаксис:

Идентификатор локальная_переменная должен соответствовать обычным правилам, действующим для

КАТУидентификаторов базыИМданных; тип._Сданных.можетСЕЙФУЛЛИНАбыть любым системным типом данных, исключая text, ntext или image. С помощью одного оператора DECLARE может быть создано несколько

локальных переменных. Для этого переменные нужно указывать через запятую:

КОМАРБЕКОВА А.С.

Большинство типов данных являются скалярными (scalar); то есть они содержат одно значение, такое как число или строка. Но существует возможность объявления перемененных с табличным типом данных. Синтаксис для созданияСУБДпеременной табличного типа показан ниже:

В этом примере, определение_таблицы идентично обычному определению CREATE TABLE, за исключением того, что разрешается использование лишь следующих ограничений: PRIMARY KEY, UNIQUE KEY, NULL и CHECK.

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

После создания, локальная переменная первоначально имеет значение NULL. Вы можете присвоить переменной значение следующими способами:

использовать команду SET с указанием константы или переменной:

132

использовать команду SELECT с указанием константы или переменной:

использовать команду SELECT с указанием другого оператора SELECT:

использовать команду INSERT INTO с указанием переменной табличного типа:

Обратите внимание, что в третьем случае (SELECT с другим SELECT) оператор присвоения (=) замещает второе ключевое слово в SELECT; оно второй раз не повторяется. Последний пример демонстрирует синтаксис INSERT INTO...SELECT команды INSERT INTO. Вы также можете

использовать синтаксис INSERT INTO...VALUES:

КАТУ ИМ.С.СЕЙФУЛЛИНА

Глобальные переменные

КГлобальные.Т.Нпеременные. ОМАРБЕКОВАобозначаются двойным символом @ (@@VERSION) и предоставляютсяА.С. программой SQL Server. Они не могут создаваться пользователем. Большинство глобальных

переменных предоставляет информацию о текущем статусе SQL Server. Они все представлены в панели

Object Browser в папке Common Functions.

Переменные конфигурированияСУБД

Наиболее часто используемые переменные конфигурирования приведены в таблице 1. Они предоставляют информацию о текущих установках различных свойств и параметров SQL Server.

Таблица 1. Переменные конфигурирования

Переменная

Значение

 

 

@@CONNECTIONS

Число соединений или попыток соединения с момента последнего

 

запуска сервера.

 

 

@@DATEFIRST

Возвращает число, обозначающее день недели (Monday=1,

 

Sunday=7).

 

 

@@DBTS

Последнее значение колонки с отметкой времени, вставленной в

 

базу данных.

 

 

@@LANGID

Идентификатор локального языка, использующегося в данный

 

момент.

 

 

@@LANGUAGE

Название текущего языка.

 

 

@@OPTIONS

Возвращает значение текущей опции SET.

 

 

@@SERVERNAME

Имя локального сервера.

 

133

@@VERSION

Дата, версия и тип процессора текущей инсталляции.

 

 

Статистические переменные

Статистические переменные предоставляют информацию о процессах, выполненных SQL Server с момента последнего запуска. Основные переменные показаны в таблице 2.

Таблица 2. Статические переменные

 

 

Переменная

Значение

 

 

@@CPU_BUSY

Время, потраченное процессором на работу с момента

 

последнего запуска сервера.

 

 

@@IDLE

Время, бездействия SQL Server с момента последнего запуска

 

сервера.

 

 

@@IO_BUSY

Время, которое потратил SQL Server на выполнение операций

 

ввода и вывода с момента последнего запуска сервера.

 

 

@@TOTAL_ERRORS

Число ошибок чтения/записи диска с момента последнего

 

запуска сервера.

 

 

@@TOTAL_READ Число выполненных сервером операций чтения с диска с

КАТУ ИМмомента.последнегоС.СЕЙФУЛЛИНАзапуска сервера.

@@TOTAL WRITE Число выполненных сервером операций записи на диск с момента последнего запуска сервера.

Системные переменные

КСистемныепеременные. ОМАРБЕКОВАпоказаны в таблице 3. Они предоставляют информацию о последнихАоперациях.С. с таблицами, выполненных сервером.

Таблица 3. Системные переменныеСУБД

Переменная Значение

@@IDENTITY Последнее значение идентификационной колонки, вставленной в базу данных.

@@ROWCOUNT Количество строк, подвергшихся воздействию последнего оператора.

Объявите локальную переменную

1. Введите

134

2.В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить сценарий). Query Analyzer выполнит сценарий и отобразит результат.

Используйте оператор SELECT для присвоения значений

1. Введите

С.СЕЙФУЛЛИНА

К. ОМАРБЕКОВА А.С.

СУБД

2.В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить сценарий). Query Analyzer выполнит сценарий и отобразит результат.

135

Используйте табличные переменные

1. Введите

2. В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query КАТУ(Выполнить запросИМ). QueryAnalyzer.СЕЙФУЛЛИНАвыполнит сценарий и отобразит результат.

К.Т. А.С.

Используйте глобальные переменные для отображения информации о сервере

1. Введите

2.В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить запрос).Query Analyzer выполнит сценарий и отобразит результат.

136

КАТУ ИМ.С.СЕЙФУЛЛИНА

К.Т.Н. ОМАРБЕКОВА А.С.

СУБД

137

20 Управление ходом выполнения Задание

1.Выполнить оператор по условию

2.Вернуть условные результаты в операторе SELECT на основе эквивалентности одного значения

3.Вернуть условные результаты в операторе SELECT на основе значения булевого выражения

4.Безусловно передавать управление

5.Повторять оператор или блок операторов пока условие выполнения истинно (TRUE)

6.Выйти из цикла WHILE

7.Вернуться к началу цикла WHILE

Часто бывает необходимо, чтобы некоторые операторы T-SQL выполнялись только в случае выполнения какого-либо условия. Команда IF…ELSE помогает решить эту задачу. На уроке рассматривается действие условного оператора, оператора выбора CASE. Подобное внимание уделено именно использованию T-SQL. Вводится большое количество новых методов управления программным кодом T-SQL, таких как циклы, переходы, условия.

Transact-SQL обрабатывает операторы сценария от начала до конца, не пропуская ни один оператор, если не задано иное. Это не всегда то, что вам нужно. Иногда вам необходимо, чтобы оператор

КАТУвыполнялся, толькоИМесли некотороеусловие.СЕЙФУЛЛИНАистинно, или повторялся, до тех пор, пока некоторое условие является истинным, или выполнялся указанное количество раз.

Команды управления ходом выполнения Transact-SQL предоставляют вам возможность реализации подобных требований; и команды управления ходом выполнения являются темой рассмотрения в этом

уроке.

КБлокиоператоров.Н. ОМАРБЕКОВА А.С.

Когда вы приступаете к использованию операторов управления ходом выполнения Transact-SQL, удобно интерпретировать определеннуюСУБДгруппу команд как блок. Transact-SQL позволяет вам сделать это с помощью пары команд BEGIN...END.

Если за какой-либо командой управления ходом выполнения следует с ключевое слово BEGIN, Transact-SQL будет применять эту команду для всех операторов, расположенных междуBEGIN и END.

В блок вы можете включить любой оператор Transact-SQL, в том числе другие блоки BEGIN...END, но здесь есть несколько ограничений. Вы не можете сочетать операторы CREATE DEFAULT, CREATE PROCEDURE, CREATE RULE, CREATE TRIGGER и CREATE VIEW с какими-либо другими операторами. Также вы не можете изменять структуру таблицы и затем ссылаться на новый столбец в этом же блоке.

Условное выполнение

Первая группа операторов управления ходом выполнения, которую мы рассмотрим, определяет порядок выполнения операторов на основе значения булева выражения. (Напомним, что булевы выражения работают с логическими значениями типа "истина" (TRUE) или "ложь" (FALSE)).

138

IF...ELSE

Оператор IF, является простейшим из набора команд управления ходом выполнения. Если булево выражение, следующее за командой IF, имеет значение TRUE, то будет выполнен оператор или блок операторов, следующий за этим. Если булево выражение имеет значение FALSE, то оператор или блок операторов, следующий за этим, будет пропущен.

Необязательная команда ELSE позволяет вам задавать оператор или блок операторов, который будет выполняться, только если булево выражение имеет значение FALSE. Например, команды Transact-SQL, представляемые ниже, возвращают 'Истина', если @test имеет значение "истина", и 'Ложь', если нет.

IF @test

SELECT 'Истина'

ELSE

SELECT 'Ложь'

Совет. Операторы IF...ELSE могут быть вложены один в другой, образуя логическую структуру, схожую с конструкцией IF...ELSEIF...ELSE, принятой в других языках программирования. Однако следует остерегаться использовать этот прием в простых случаях. Тот же эффект можно достичь путем

КАТУиспользования оператораИМCASE, .которыйС.мыСЕЙФУЛЛИНАрассмотрим далее. При этом оценить ход выполнения будет легче.

Используйте структуру IF...ELSE для управления выполнением

1. Введите

К.Т.Н. ОМАРБЕКОВА А.С.

СУБД

Совет. Этот сценарий использует команду PRINT для отображения сообщений на вкладке Messages (Сообщения) окна запроса Query. Команда PRINT полезна, когда вы впервые разрабатываете сценарий, в реальных же приложениях вы редко будете ее использовать.

139

4.В панели инструментов анализатора запросов Query Analyzer нажмите кнопку Execute Query (Выполнить сценарий). Query Analyzer выполнит запрос и отобразит панель сетки Grids Pane.

5.Выберите вкладку Messages (Сообщения). Query Analyzer отобразит результат выполнения оператора IF...ELSE.

КАТУ

К.Т. А.С.

CASE СУБД

В большинстве языков программирования оператор CASE является расширенной формой оператора IF, которая позволяет вам определять множество булевых выражений в одном операторе. В SQL Server CASE является функцией, а не командой. Она используется не сама по себе, как IF. а как часть оператора SELECT или UPDATE.

Операторы, включающие в себя структуру CASE, могут использовать одну из двух синтаксических форм, в зависимости от того, будет ли изменяться оцениваемое выражение. Простейшая форма в предположении, что всегда будет оцениваться булево выражение, имеет следующий вид:

значение = выражение

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

CASE значение

140