stored-procedures - 如何更改 Snowflake 存储过程中的会话参数
问题描述
我正在使用存储过程构建日期维度,并且需要更改会话参数 WEEK_START 以确保正确计算某些值。在这个主题上,Snowflake 文档主要集中在区分 Caller 与 Owner 权限,但暗示这应该是可能的。但是,调用下面定义的过程时得到的结果是:“失败:存储过程执行错误:不支持的语句类型'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 添加到定义中,它应该可以工作。
推荐阅读
- python - Tkinter Canvas PDF Viewer Next Page Render 仅在调试时有效
- python - 在 PyTorch 中并行求和特征图中的所有对角线
- ruby-on-rails - 如何在 ruby on rails 中将翻译表转换为 YAML 翻译文件
- python - 更改数据框中几列的数据时间
- angular - 角度反弹动画
- mongodb - 在 MongoDB 中使用文档引用建模一对多关系时的权衡?
- git - 为什么 git diff 不显示有关特定提交和文件的信息?
- c# - google-oauth / calendar api的本地开发问题
- xml - 即使没有 xmlns,ElementTree find 也会返回 None
- firebase - 如何使用 curl 从 Firebase 数据库获取数据?