Transact-SQL

Transact-SQL (T-SQL) — процедурное расширение языка SQL компаний Microsoft (для Microsoft SQL Server) и Sybase (для Sybase ACE).

SQL был расширен такими дополнительными возможностями, как:

  • управляющие операторы
  • локальные переменные
  • различные дополнительные функции (для обработки строк, дат, математические и др.)
  • поддержка аутентификации Microsoft Windows

Управляющие операторы

Для управления потоком исполнения в Transact-SQL используются следующие операторы: BEGIN и END, BREAK, CONTINUE, GOTO, IF и ELSE, RETURN, WAITFOR и WHILE.

Переменные

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

Для объявления локальной переменной заданного типа используется ключевое слово DECLARE. При объявлении все переменные инициализируются значением NULL. Чтобы присвоить переменной значение, нужно использовать ключевое слово SET.

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

DECLARE @Counter INT
SET @Counter = 10
WHILE @Counter > 0
BEGIN
   PRINT 'The count is ' + CONVERT(VARCHAR(10), @Counter)
   SET @Counter = @Counter - 1
END

Также переменная может быть инициализирована результатом запроса:

DECLARE @UserName NVARCHAR(100)
SELECT @UserName = UserName FROM Users

После исполнения данного скрипта значение переменной @UserName равно значению соответствующего поля последней выбранной записи. При этом, если запрос не вернёт ни одной записи, значение переменной, в отличие от оператора SET, не изменится.

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

SQL Server имеет ряд предопределённых глобальных переменных (global variables), которые предназначены для получения информации о состоянии сервера, базы данных или текущего подключения. В отличие от локальных переменных их значение нельзя менять. Название глобальных переменных начинается с двух символов «@».

Примеры глобальных переменных:

  • @@ERROR — возвращает номер ошибки последней выполненной команды
  • @@ROWCOUNT — возвращает количество строк обработанное последней командой (SELECT, INSERT, DELETE, UPDATE)
  • @@SERVERNAME — название сервера
  • @@VERSION — версия SQL Server

Табличные переменные

Табличные переменные (англ. table variables) появились в 2000-й версии SQL Server. Предназначены для временного хранения наборов данных для последующей обработки. К табличным переменным можно применять стандартные команды SQL (SELECT, INSERT, DELETE, UPDATE).

Например

DECLARE @UserNames TABLE
(
  LastName  varchar(50) NOT NULL,
  FirstName varchar(50) NOT NULL,
  BirthDay  datetime
)

INSERT INTO @UserNames (LastName, FirstName, BirthDay)
VALUES ('Иванов', 'Иван', '1977-04-27')

INSERT INTO @UserNames (LastName, FirstName)
VALUES ('Петрович', 'Пётр')

этот фрагмент кода объявляет табличную переменную @UserNames и вставляет в неё две записи.

Литература

  • Майк Гандерлой, Джозеф Джорден, Дейвид Чанц. Часть II. Язык программирования Transact-SQL // Освоение Microsoft SQL Server 2005 = Mastering Microsoft SQL Server 2005. — М.: «Диалектика», 2007. — С. 139—280. — ISBN 0-7821-4380-6.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.