Введение в программирование SQL Server. Создание и управление базой данных. Инструменты целостности данных, страница 5

Следующий пример возвращает имя базы данный, используемой в данный момент:

SELECT DB_NAME() AS ‘datamase’

Результатом будет только одно значение с именем базы данных.

Функции набора строк – могут использоваться как ссылки на таблицы в операторах Transact-SQL. Следующий пример выполняет распределённый запрос для получения информации от EMP таблицы:

SELECT *

FROM OPENQUERY(OracleSrv, ‘SELECT ENAME, EMPNO FROM SCOTT.EMP’)

Примеры функций

Вы часто будете использовать функции для конвертирования значения даты из формата одной страны в другой. Для изменения формата даты вы должны использовать функцию CONVERT с опцией стиля, для определения формата даты, который будет возвращён.

Пример 1

Следующий пример определяет, как вы можете конвертировать дату в другой стиль:

SELECT 'ANSI:' AS Region, CONVERT (varchar(30), GETDATE(), 102) AS Style

UNION

SELECT  'European:', CONVERT (varchar(30), GETDATE(), 113) AS Style

UNION

SELECT  'Japanise:', CONVERT (varchar(30), GETDATE(), 111) AS Style

Результат выполнения этого кода будет выглядеть так:

Region    Style                         

--------- ------------------------------

ANSI:     2003.05.21

European: 21 May 2003 10:41:08:450

Japanise: 2003/05/21

(3 row(s) affected)

Пример 2

Следующий пример использует опцию DATEFORMAT оператора SET для форматирования даты продолжительности соединения. Эта установка используется только в прерывании строки, в которую происходит конвертирование и не имеет эффекта при отображении значения даты:

SET DATEFORMAT dmy

GO

DECLARE @vdate datetime

SET @vdate = '29/11/00'

SELECT @vdate

Результат:

------------------------------------------------------

2000-11-29 00:00:00.000

(1 row(s) affected)

Пример 3

Следующий пример возвращает имя пользователя и приложение, которое использует пользователь для текущей сессии и соединения. Пользователь в этом примере член роли sysadmin.

USE Northwind

SELECT user_name(), app_name()

Результат:

------------- ---------------------------dbo           SQL Query Analyzer

(1 row(s) affected)

Пример 4

Следующий пример определяет, поддерживает ли колонка FirstName таблицы Employees базы данных Northwind нулевые значения.

Если результат равен нулю(false), значит, нулевые значения не поддерживаются. Если результат равен 1 (true), значит нулевые значения разрешены. Обратите внимание, что функция OBJECT_ID вызываться из функции COLUMNPROPERTY. Это позволяет вам получать id объекта таблицы Employees.

USE Northwind

SELECT COLUMNPROPERTY(OBJECT_ID('Employees'), 'FirstName', 'AllowNull')

Результат:

-----------

NULL

(1 row(s) affected)

Язык контроля выполнения элементов

Язык Transact-SQL содержит несколько языковых элементов, которые контролируют ход логики в операторах. Он также содержит выражение CASE, которое позволяет вам использовать условную логику одной или нескольких строк во время использования операторов SELECT или UPDATE.

Следующие языковые элементы позволяют вам контролировать ход логики в скрипте:

Блок BEGIN..END этот элемент заключает последовательность операторов Transact-SQL так, что SQL Server трактует их как модуль.

Блок IF..ELSE эти элементы указывают, что SQL Server должен выполнить первое выражение, если определённое условие равно true (истина). Иначе он должен выполнить второе выражение.

Конструкция WHILE выполняет операторы циклически так долго, пока определённое выражение истинно (true). Операторы BREAK и CONTINUE контролирую выполнение операторов внутри цикла WHILE.

Пример 1

Следующий пример определяет, есть ли у покупателя какие-нибудь заказы, прежде чем удалить покупатели из списка:

USE Northwind

IF EXISTS (SELECT OrderID FROM Orders

WHERE CustomerID = 'Frank')

PRINT '*** Клиент не может быть удалён ***'

ELSE

BEGIN

DELETE Customers  WHERE CustomerID = 'Frank'

PRINT '*** Клиент удалён ***'

END

Выражение CASE содержит список значений и после этого проверяет каждый из них. Если выражение CASE возвращает значение true (истина), то возвращается значение из соответствующего WHEN пункта.

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

CASE input_expression