stringtranslate.com

Транзакт-SQL

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

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

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

Переменные

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

ОБЪЯВИТЬ @var1 NVARCHAR ( 30 ); SET @var1 = 'Какое-то имя' ; ВЫБЕРИТЕ @var1 = Имя ИЗ продаж . Магазин ГДЕ CustomerID = 100 ;              

Управление потоком

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

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

ЕСЛИ DATEPART ( dw , GETDATE ()) = 7 ИЛИ DATEPART ( dw , GETDATE ()) = 1 ПЕЧАТЬ 'Сейчас выходные.' ; ELSE PRINT «Сегодня будний день». ;             

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

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

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

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

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

ОБЪЯВИТЬ @i INT ; УСТАНОВИТЬ @i = 0 ;     WHILE @i < 5 НАЧИНАЕТ ПЕЧАТЬ «Привет, мир». ; УСТАНОВИТЬ @i = @i + 1 ; КОНЕЦ ;           

Изменения в операторах DELETE и UPDATE

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

В этом примере удаляются все users, кто был помечен в user_flagsтаблице флагом «бездействующий».

УДАЛИТЬ u ИЗ пользователей AS u INNER JOIN user_flags AS f ON u . идентификатор = ж . идентификатор ГДЕ f . имя = 'бездействующий' ;                

ОБЪЕМНАЯ ВСТАВКА

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

ПОПРОБУЙ ПОЙМАТЬ

Начиная с SQL Server 2005, [1] 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 ; КОНЦЕВАЯ ЗАЩЕЛКА ;        

Смотрите также

Рекомендации

  1. ^ «Усовершенствования T-SQL в SQL Server 2012», Джонатан Аллен, 19 марта 2012 г., infoq.com

Внешние ссылки