Transact-SQL

редактировать
Microsoft и Собственное расширение Sybase для языка структурированных запросов

Transact-SQL (T-SQL ) является проприетарным расширением Microsoft и Sybase для SQL (язык структурированных запросов), используемый для взаимодействия с реляционными базами данных. T-SQL расширяет стандарт SQL и включает процедурное программирование, локальные переменные, различные вспомогательные функции для обработки строк, обработки дат, математики и т. Д., А также изменения в DELETE и UPDATE операторы.

Transact-SQL играет центральную роль в использовании Microsoft SQL Server. Все приложения, которые взаимодействуют с экземпляром SQL Server, делают это, отправляя операторы Transact-SQL на сервер, независимо от пользовательского интерфейса приложения.

Хранимые процедуры в SQL Server - это исполняемые процедуры на стороне сервера. Преимущество хранимых процедур - возможность передавать параметры.

Содержание
  • 1 Переменные
  • 2 Управление потоком
  • 3 Изменения в операторах DELETE и UPDATE
  • 4 BULK INSERT
  • 5 TRY CATCH
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
Переменные

Transact-SQL предоставляет следующие операторы для объявления и установки локальных переменных: DECLARE, SETи SELECT.

DECLARE @ var1 NVARCHAR (30); SET @ var1 = 'Некоторое имя'; ВЫБЕРИТЕ @ var1 = Имя ИЗ Sales.Store ГДЕ CustomerID = 100;
Управление потоком

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

IFи ELSEразрешить условное исполнение. Этот пакетный оператор напечатает «Сейчас выходные», если текущая дата - выходной день, или «Это рабочий день», если текущая дата - будний день. (Примечание: этот код предполагает, что воскресенье настроено как первый день недели в настройке @@ DATEFIRST.)

IF DATEPART (dw, GETDATE ()) = 7 OR DATEPART (dw, GETDATE ()) = 1 PRINT 'Сейчас выходные.'; ELSE PRINT 'Это будний день.';

BEGINи ENDпомечают блок операторов. Если условное выражение в приведенном выше примере должно управлять более чем одним оператором, мы можем использовать BEGINи ENDследующим образом:

IF DATEPART (dw, GETDATE ()) = 7 OR DATEPART (dw, GETDATE ()) = 1 BEGIN PRINT 'Сейчас выходные.'; ПЕЧАТЬ «Отдохни на выходных!»; КОНЕЦ; ELSE BEGIN PRINT 'Сейчас будний день.'; ПЕЧАТЬ «На работу в будний день!»; КОНЕЦ;

WAITFORбудет ждать заданное время или до определенного времени суток. Оператор может использоваться для задержки или для блокировки выполнения до установленного времени.

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

BREAKзавершает охватывающий цикл WHILE, а CONTINUEвызывает выполнение следующей итерации цикла. Пример цикла WHILEприведен ниже.

ОБЪЯВИТЬ @i INT; НАБОР @i = 0; WHILE @i < 5 BEGIN PRINT 'Hello world.'; SET @i = @i + 1; END;
Изменения в операторах DELETE и UPDATE

В Transact-SQL оба оператора DELETEи UPDATEусовершенствованы, позволяя передавать данные из другой таблицы в в операции можно использовать без подзапроса:

  • DELETEпринимает объединенные таблицы в предложении FROM, аналогично SELECT. Когда это будет сделано, имя или псевдоним, из которого должна быть удалена таблица в объединении, помещается между DELETEи FROM.
  • UPDATE, разрешает FROMпункт будет добавлен. Обновляемая таблица может быть либо объединена в предложении FROMи на нее можно ссылаться по псевдониму, либо на нее можно ссылаться только в начале оператора в соответствии со стандартным SQL.

В этом примере удаляются все пользователей, ​​которые отмечены флажком «Неактивен».

УДАЛИТЬ u ИЗ пользователей КАК u ВНУТРЕННЕЕ СОЕДИНЕНИЕ user_flags КАК f ВКЛ u.id = f.id ГДЕ f.name = 'idle';
BULK INSERT

BULK- это оператор Transact-SQL, который реализует процесс массовой загрузки данных, вставляя несколько строк в таблицу, считывая данные из внешнего последовательного файла. Использование BULK INSERTприводит к более высокой производительности, чем процессы, которые выдают отдельные операторы INSERTдля каждой добавляемой строки. Дополнительные сведения доступны в MSDN.

TRY CATCH

Начиная с SQL Server 2005, Microsoft представила дополнительную логику TRY CATCHдля поддержки поведения типа исключения. Такое поведение позволяет разработчикам упростить свой код и исключить проверку @@ ERRORпосле каждого оператора выполнения SQL.

- начать транзакцию BEGIN TRAN; BEGIN TRY - выполнить каждый оператор INSERT INTO MYTABLE (NAME) VALUES ('ABC'); ВСТАВИТЬ В MYTABLE (ИМЯ) ЗНАЧЕНИЯ ('123'); - зафиксировать транзакцию COMMIT TRAN; END TRY BEGIN CATCH - откатить транзакцию из-за ошибки ROLLBACK TRAN; КОНЕЦ ЗАХВАТ;
См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-11 09:40:57
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте