SET VAR
描述
SET VAR
命令用于设置当前会话中已声明的临时变量。
要设置配置变量或 Hive 变量,请使用 SET。
语法
SET { VAR | VARIABLE }
{ { variable_name = { expression | DEFAULT } } [, ...] |
( variable_name [, ...] ) = ( query ) }
参数
-
variable_name
指定一个现有变量。如果指定多个变量,则不允许有重复项。
-
expression
任何表达式,包括标量子查询。
-
DEFAULT
如果指定
DEFAULT
,则会为变量分配默认表达式,如果没有默认表达式,则分配NULL
。 -
query
一个 查询,它最多返回一行,并且其列数与指定变量的数量相同。每列都必须能够隐式转换为对应变量的数据类型。如果查询未返回任何行,则分配
NULL
值。
示例
--
DECLARE VARIABLE var1 INT DEFAULT 7;
DECLARE VARIABLE var2 STRING;
-- A simple assignment
SET VAR var1 = 5;
SELECT var1;
5
-- A complex expression assignment
SET VARIABLE var1 = (SELECT max(c1) FROM VALUES(1), (2) AS t(c1));
SELECT var1;
2
-- resetting the variable to DEFAULT
SET VAR var1 = DEFAULT;
SELECT var1;
7
-- A multi variable assignment
SET VAR (var1, var2) = (SELECT max(c1), CAST(min(c1) AS STRING) FROM VALUES(1), (2) AS t(c1));
SELECT var1, var2;
2 1
-- Too many rows
SET VAR (var1, var2) = (SELECT c1, CAST(c1 AS STRING) FROM VALUES(1), (2) AS t(c1));
[ROW_SUBQUERY_TOO_MANY_ROWS] More than one row returned by a subquery used as a row. SQLSTATE: 21000
-- No rows
SET VAR (var1, var2) = (SELECT c1, CAST(c1 AS STRING) FROM VALUES(1), (2) AS t(c1) WHERE 1=0);
SELECT var1, var2;
NULL NULL