如何更改 Snowflake 存储过程中的会话参数
How to alter session parameters within a Snowflake stored procedure
我正在使用存储过程构建日期维度,需要更改会话参数 WEEK_START 以确保正确计算某些值。在这个主题上,Snowflake 文档主要侧重于区分调用者与所有者的权利,但暗示这应该是可能的。但是,我在调用下面定义的过程时得到的结果是:“失败:存储过程执行错误:不支持的语句类型 'ALTER_SESSION'。”
CREATE OR REPLACE PROCEDURE PUBLIC.USP_ALTER_SESSION_TEST(BATCH_ID float)
returns string
language javascript
as
$$
var sql_session,
sql_test,
stmt_session,
stmt_test;
sql_session = "ALTER SESSION SET WEEK_START = 1;";
sql_test = "SELECT DAYOFWEEK(CURRENT_DATE());";
try
{
stmt_session = snowflake.createStatement( {sqlText: sql_session} );
stmt_session.execute ();
stmt_test = snowflake.createStatement( {sqlText: sql_test} );
stmt_test.execute ();
return "Succeeded.";
}
catch (err)
{
return "Failed: " + err;
}
$$
;
作为所有者执行时有些东西不是。调用者执行允许周开始。将 EXECUTE AS CALLER 添加到定义中,它应该可以工作。
我正在使用存储过程构建日期维度,需要更改会话参数 WEEK_START 以确保正确计算某些值。在这个主题上,Snowflake 文档主要侧重于区分调用者与所有者的权利,但暗示这应该是可能的。但是,我在调用下面定义的过程时得到的结果是:“失败:存储过程执行错误:不支持的语句类型 'ALTER_SESSION'。”
CREATE OR REPLACE PROCEDURE PUBLIC.USP_ALTER_SESSION_TEST(BATCH_ID float)
returns string
language javascript
as
$$
var sql_session,
sql_test,
stmt_session,
stmt_test;
sql_session = "ALTER SESSION SET WEEK_START = 1;";
sql_test = "SELECT DAYOFWEEK(CURRENT_DATE());";
try
{
stmt_session = snowflake.createStatement( {sqlText: sql_session} );
stmt_session.execute ();
stmt_test = snowflake.createStatement( {sqlText: sql_test} );
stmt_test.execute ();
return "Succeeded.";
}
catch (err)
{
return "Failed: " + err;
}
$$
;
作为所有者执行时有些东西不是。调用者执行允许周开始。将 EXECUTE AS CALLER 添加到定义中,它应该可以工作。