DECLARE (Snowflake Scripting)

声明一个或多个 Snowflake Scripting 变量、光标、RESULTSETs 或异常。

有关变量、光标、RESULTSETs 和异常的详细信息,请参阅:

另请参阅:

LET

语法

DECLARE
  { <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> };
  [{ <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> }; ... ]
Copy

下文将更详细地描述每种声明类型的语法。

变量声明语法

使用以下语法 声明变量

<variable_declaration> ::=
  <variable_name> [<type>] [ { DEFAULT | := } <expression>]
Copy

其中:

variable_name

变量的名称。名称必须遵循 对象标识符 的命名规则。

type

SQL 数据类型

DEFAULT expression . := expression

expression 的值赋给变量。如果同时指定了 typeexpression,则表达式的计算结果必须是与指定类型匹配或可以隐式 转换 为指定 type 的数据类型。

例如:

profit NUMBER(38, 2) := 0;
Copy

有关完整示例,请参阅 示例

有关变量的更多信息,请参阅 使用变量

光标声明语法

使用以下语法 声明光标

<cursor_declaration> ::=
  <cursor_name> CURSOR FOR <query>
Copy

其中:

cursor_name

为光标赋予的名称。这可以是该区块中尚未使用的任何有效 Snowflake 标识符。该标识符由其他与光标相关的命令使用,例如 FETCH

query

定义光标遍历的结果集的查询。

这几乎可以是任何有效的 SELECT 语句。

例如:

c1 CURSOR FOR SELECT id, price FROM invoices;
Copy

有关光标的更多信息(包括完整示例),请参阅 使用游标

RESULTSET 声明语法

使用以下语法 声明 RESULTSET

<resultset_name> RESULTSET [ { DEFAULT | := } [ ASYNC ] ( <query> ) ] ;
Copy

其中:

resultset_name

为 RESULTSET 赋予的名称。

该名称在当前范围内应该是唯一的。

名称必须遵循 对象标识符 的命名规则。

ASYNC

作为匿名子作业运行查询。

查询可以是任何有效的 SQL 语句,包括 SELECT 语句和 DML 语句,例如 INSERT 或 UPDATE。

当省略此关键字时,存储过程将按顺序运行子作业,每个子作业都要等待正在运行的子作业完成后才能开始。

您可以使用此关键字并发运行多个子作业,这样可以提高效率并减少总体运行时间。

您可以使用 AWAITCANCEL 语句管理 RESULTSET 的异步子作业。

DEFAULT query . := query

query 的值赋给 RESULTSET。

例如:

res RESULTSET DEFAULT (SELECT col1 FROM mytable ORDER BY col1);
Copy

有关 RESULTSETs 的更多信息(包括完整示例),请参阅 使用 RESULTSETs

异常声明语法

使用以下语法 声明异常

<exception_name> EXCEPTION [ ( <exception_number> , '<exception_message>' ) ] ;
Copy

其中:

exception_name

赋予异常的名称。

exception_number

用于唯一标识异常的数字。该数字必须是介于 -20000 和 -20999 之间的整数。该数字不应用于同时存在的任何其他例外情况。

默认值:-20000

exception_message

描述异常的消息。消息不得包含任何双引号字符。

默认值:空字符串。

例如:

exception_could_not_create_table EXCEPTION (-20003, 'ERROR: Could not create table.');
Copy

有关异常的更多信息(包括完整示例),请参阅 处理异常

示例

此示例声明了名为 profit 的变量,用于 Snowflake Scripting 匿名块:

DECLARE
  profit number(38, 2) DEFAULT 0.0;
BEGIN
  LET cost number(38, 2) := 100.0;
  LET revenue number(38, 2) DEFAULT 110.0;

  profit := revenue - cost;
  RETURN profit;
END;
Copy

注意:如果您在 Python Connector 代码中使用 SnowSQLClassic Console 或者 execute_streamexecute_string 方法,请改用本示例(请参阅 在 SnowSQL、Classic Console 和 Python Connector 中使用 Snowflake Scripting):

EXECUTE IMMEDIATE 
$$
DECLARE
  profit number(38, 2) DEFAULT 0.0;
BEGIN
  LET cost number(38, 2) := 100.0;
  LET revenue number(38, 2) DEFAULT 110.0;

  profit := revenue - cost;
  RETURN profit;
END;
$$
;
Copy

有关声明变量、游标、RESULTSETs 和异常的更多示例,请参阅:

语言: 中文