DECLARE (Snowflake Scripting)¶
声明一个或多个 Snowflake Scripting 变量、游标、RESULTSETs、嵌套存储过程或异常。
有关详细信息,请参阅以下主题:
- 另请参阅:
语法¶
以下各节更详细地描述了每种声明类型的语法:
变量声明语法¶
使用以下语法声明 变量:
其中:
例如:
有关完整示例,请参阅 示例。
有关变量的更多信息,请参阅 使用变量。
光标声明语法¶
使用以下语法声明 游标:
其中:
cursor_name为光标赋予的名称。这可以是该区块中尚未使用的任何有效 Snowflake 标识符。该标识符由其他与光标相关的命令使用,例如
FETCH。query定义光标遍历的结果集的查询。
这几乎可以是任何有效的 SELECT 语句。要在 SELECT 语句中指定绑定参数,请使用问号 (
?)。在打开游标时,可以将参数绑定到 USING 子句中的绑定变量。
例如:
有关光标的更多信息(包括完整示例),请参阅 使用游标。
RESULTSET 声明语法¶
使用以下语法声明 RESULTSET。
其中:
例如:
有关 RESULTSETs 的更多信息(包括完整示例),请参阅 使用 RESULTSETs。
嵌套存储过程声明语法¶
使用以下语法声明 嵌套存储过程:
其中:
nested_procedure_name嵌套存储过程的名称。名称必须遵循 对象标识符 的命名规则。
( [ arg_name arg_data_type ] [ , ... ] )为嵌套存储过程指定输入参数。
对于
arg_name,请指定输入实参的名称。对于
arg_data_type,指定 一个 SQL 数据类型。
RETURNS { result_data_type | TABLE ( [ col_name col_data_type [ , ... ] ] ) }指定存储过程返回的结果的类型。目前,嵌套存储过程的 RETURNS 参数中不支持 NOT NULL。
对于
RETURNS result_data_type,指定 一个 SQL 数据类型。对于
RETURNS TABLE ( [ col_name col_data_type [ , ... ] ] ),如果知道返回表中各列的 Snowflake 数据类型,请指定列名称和类型:否则(例如,如果您在运行时确定列类型),则可以省略列名称和类型:
备注
目前,在
RETURNS TABLE(...)子句中,您无法指定 GEOGRAPHY 作为列类型。这在创建存储过程和匿名过程中均适用。如果尝试指定 GEOGRAPHY 为列类型,则调用存储过程会导致该错误:
要解决这个问题,可以省略
RETURNS TABLE()中的列实参和类型。
AS nested_procedure_definition定义由嵌套存储过程所执行的代码。该定义可以包含任何有效的代码。
异常声明语法¶
使用以下语法声明 异常:
其中:
exception_name赋予异常的名称。
exception_number用于唯一标识异常的数字。该数字必须是介于 -20000 和 -20999 之间的整数。该数字不应用于同时存在的任何其他例外情况。
默认值:-20000
exception_message描述异常的消息。消息不得包含任何双引号字符。
默认值:空字符串。
例如:
有关异常的更多信息(包括完整示例),请参阅 处理异常。
示例¶
此示例声明了名为 profit 的变量,用于 Snowflake Scripting 匿名块:
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
有关声明变量、游标、RESULTSETs 和异常的更多示例,请参阅以下主题: