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 | := } ( <query> ) ] ;
Copy

其中:

resultset_name

为 RESULTSET 赋予的名称。

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

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

DEFAULT query . := query

query 的值赋给 RESULTSET。

有关 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

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

示例

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
语言: 中文