Присвоение значений переменных для выделенных пулов SQL в Azure Synapse Analytics

В этой статье вы найдете важные советы по присвоению значений переменных T-SQL в выделенном пуле SQL.

Задание переменных с помощью DECLARE

Переменные в выделенном пуле SQL задаются с помощью операторов DECLARE или SET. Инициализация переменных с помощью DECLARE — один из наиболее гибких способов задать значение переменной в пуле SQL.

DECLARE @v  int = 0
;

С помощью DECLARE можно задать одновременно несколько переменных. SELECT или UPDATE нельзя использовать для выполнения следующих задач:

DECLARE @v  INT = (SELECT TOP 1 c_customer_sk FROM Customer where c_last_name = 'Smith')
,       @v1 INT = (SELECT TOP 1 c_customer_sk FROM Customer where c_last_name = 'Jones')
;

Нельзя инициализировать и использовать переменную в одном и том же операторе DECLARE. Чтобы проиллюстрировать это, ниже приведен недопустимый пример, так как @p1 инициализируется и используется в одной и той же инструкции DECLARE. Следующий пример показывает возникающую ошибку:

DECLARE @p1 int = 0
,       @p2 int = (SELECT COUNT (*) FROM sys.types where is_user_defined = @p1 )
;

Задание значений с помощью SET

SET — это очень распространенный метод задания одной переменной.

Ниже перечислены допустимые способы задания значения с помощью инструкции SET:

SET     @v = (Select max(database_id) from sys.databases);
SET     @v = 1;
SET     @v = @v+1;
SET     @v +=1;

С помощью SET можно одновременно задать только одну переменную. Тем не менее допускаются составные операторы.

Ограничения

Нельзя использовать UPDATE, чтобы присвоить значение переменной.

Дальнейшие действия

Дополнительные советы по разработке приведены в обзоре разработки.