WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
Пример
Следующий пример рассматривает инвентаризацию статуса продуктов в таблице Products и возвращает сообщение, основанное на количестве доступных и количестве возвращённых счетов, и какие продукты были прерваны:
SELECT ProductID, 'Статус продуктов' =
CASE
WHEN (UnitsInStock < UnitsOnOrder AND Discontinued=0)
THEN 'Негативная инвентаризация - Оплатить сейчас!'
WHEN ((UnitsInStock - UnitsOnOrder) < ReorderLevel AND Discontinued=0)
THEN 'Сделать повторный заказ!'
WHEN (Discontinued=1) THEN 'Остановленный'
ELSE 'В наличии'
END
FROM Northwind..Products
Результат:
ProductID Статус продуктов
----------- --------------------------------------------
1 В наличии
2 Негативная инвентаризация - Оплатить сейчас!
3 Негативная инвентаризация - Оплатить сейчас!
4 В наличии
5 Остановленный
.
.
(77 row(s) affected)
Комментарии – это не выполняемые строки текста помещённые в операторы для описания действий, которые выполняет оператор или для отмены одной или нескольких строк оператора. Вы можете использовать комментарии одним из следующих путей – строчный и блочный.
Строчный комментарий.
Вы может создать блочный комментарий, используя знак двойного тире (--), для установки комментария начиная с этих знаков. Язык Transact-SQL игнорирует текст справа от знака комментария.
Пример
–- Пример комментариев. Этот текст будет проигнорирован
SELECT ProductName –- Этот текст тоже будет проигнорирован
FROM Products
Блочные комментарии.
Вы можете создавать блочные комментарии, если поместите вначале знак (/*), а в конце (*/). Такие комментарии часто используются вначале скрипта для описания его работы, параметров и любой дополнительной информации.
Пример
/*
Этот пример скрипта демонстрирует работу
Многострочного комментария. Весь этот текст
Будет проигнорирован при выполнении скрипта
*/
SELECT ProductName
FROM Products
Вы можете также комментировать код, чтобы при выполнении скрипта определённые участки пропускались:
Пример
/*
SELECT ProductName
FROM Products
*/
В этом примере полностью закомментирован весь код скрипта и ничего не будет выполнено.
Вы можете выполнять операторы Transact-SQL создавая операторы динамически или с помощью использования batch (партий), скриптов или транзакций. Вы также можете использовать Extensible Markup Language (XML) для отображения данных на WEB странице.
Вы можете строить операторы динамически так, чтобы они создавались в то же время, когда SQL Server будет их выполнять. Для выполнения операторов динамически используйте оператор EXECUTE вместе с набором строк запроса.
EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )
Вы устанавливаете опции динамически, и переменные и временные таблицы, которые вы создаете, существуют только пока SQL Server выполняет операторы. Рассматривайте следующие замечания об операторе EXECUTE:
Оператор EXECUTE выполняет операторы собранные в строку символов набора Transact-SQL. Так как это строковые литералы, убедитесь, что вы добавили пробелы в необходимых местах для обеспечения соответствующего объединения.
Все члены строки EXECUTE должны быть в виде строковых данных. Вы должны конвертировать все числа перед выполнением оператора EXECUTE.
Вы не можете использовать функции для создания строк для выполнения.
Пример 1
Этот пример демонстрирует, как вы можете использовать динамически выполняемый оператор для выбора всех колонок и строк из базы данных. С помощью встроенных процедур, пользователь передаёт информацию о таблице и базе данных в операторы в качестве параметров и после этого выполняет запрос к указанной таблице базы данных:
DECLARE @dbname varchar(30), @tablename varchar(30)
SET @dbname = 'Northwind'
SET @tablename = 'Products'
EXECUTE('USE '+@dbname+' SELECT ProductName FROM '+@tablename)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.