当我尝试使用雪花存储过程执行更改命令时给出错误?
Posted
技术标签:
【中文标题】当我尝试使用雪花存储过程执行更改命令时给出错误?【英文标题】:when I trying to execute alter command using snowflake stored procedure giving error's? 【发布时间】:2021-05-27 14:37:32 【问题描述】:我使用以下代码创建了存储过程,但出现错误。
CREATE OR REPLACE PROCEDURE testproc()
returns string not null
language javascript
as
$$
var sql_textA = "ALTER SESSION SET TIMEZONE = 'UTC'" ;
var stmt = snowflake.createStatement( sqlText: sql_textA);
var rs = stmt.execute();
var sql_textb="SELECT CURRENT_TIMESTAMP;"
var stmt = snowflake.createStatement( sqlText: sql_textA);
var rs = stmt.execute();
return "succes";
$$
;
call testproc()
出现如下错误 "存储过程执行错误:不支持的语句类型 'ALTER_SESSION'。在 Statement.execute 第 4 行位置"
【问题讨论】:
【参考方案1】:您需要创建具有 CALLER 权限的过程:
CREATE OR REPLACE PROCEDURE testproc()
returns string not null
language javascript
execute as caller
as
$$
var sql_textA = "ALTER SESSION SET TIMEZONE = 'UTC'" ;
var stmt = snowflake.createStatement( sqlText: sql_textA);
var rs = stmt.execute();
var sql_textb="SELECT CURRENT_TIMESTAMP;"
var stmt = snowflake.createStatement( sqlText: sql_textb);
var rs = stmt.execute();
rs.next();
return rs.getColumnValue(1);
$$
;
call testproc();
https://docs.snowflake.com/en/sql-reference/stored-procedures-rights.html#choosing-between-owner-s-rights-and-caller-s-rights
【讨论】:
感谢您的快速回复。您能帮我使用上述过程返回当前时间戳值吗 如何查看输出值 我觉得你需要输出rs的结果,而不是success
赛,我已经更新了程序。现在它将获取并返回第二个查询的第一行。以上是关于当我尝试使用雪花存储过程执行更改命令时给出错误?的主要内容,如果未能解决你的问题,请参考以下文章
雪花存储过程给出类似“Uncaught ReferenceError”之类的错误?
Python Glue 作业 - 雪花存储过程未返回确切的错误消息
当我在存储过程中使用相同的公式计算日期时,日期值格式不同 - 雪花