Stored procedures 无法在snowflake数据库中运行存储过程
当我创建上面的存储过程时,将显示下面的消息Stored procedures 无法在snowflake数据库中运行存储过程,stored-procedures,snowflake-cloud-data-platform,Stored Procedures,Snowflake Cloud Data Platform,当我创建上面的存储过程时,将显示下面的消息 CREATE OR REPLACE PROCEDURE wh.sp_schema.my_sp(arg1 STRING, arg2 STRING) RETURNS VARCHAR(16777216) LANGUAGE JAVASCRIPT AS $$ stmt = snowflake.createStatement( {sqlText: `CREATE OR REPLACE TABLE wh.table_schema.RAW_`+arg2+`_`
CREATE OR REPLACE PROCEDURE wh.sp_schema.my_sp(arg1 STRING, arg2 STRING)
RETURNS VARCHAR(16777216)
LANGUAGE JAVASCRIPT
AS
$$
stmt = snowflake.createStatement(
{sqlText: `CREATE OR REPLACE TABLE wh.table_schema.RAW_`+arg2+`_`+arg1+` LIKE wh.temp_schema.RAW_`+arg2+`_TEMPLATE`}
);
rs = stmt.execute();
rs.next();
output = rs.getColumnValue(1);
return output;
$$
;
当我使用从工作表运行存储过程时
Function my_sp successfully created.
我看到以下错误:
CALL my_sp('2018','abc');
CALL wh.sp_schema.my_sp('2018','abc');
我甚至尝试使用存储过程的完全限定名运行:
SQL compilation error: Invalid identifier my_sp
我仍然看到以下错误:
CALL my_sp('2018','abc');
CALL wh.sp_schema.my_sp('2018','abc');
另外,我想知道一个命令,看看我的存储过程是否已创建。
我在“wh”仓库和“sp_schema”模式下查看了snowflake UI,但除了表之外,看不到任何东西(存储过程)。snowflake不支持
存储过程。他们正在为它实现基于javascript`的API,但它仍然处于草稿模式
下面是他们的API(注意,草稿文档写在右边)
下面是他们在支持论坛上确认的问题的答案。这有两种明显的可能出错的原因:
您已将过程所有权隐式地捐赠给您没有的角色
现在,过程和调用类型签名之间不匹配。请验证是否存在wh.sp_架构.my_sp(STRING,STRING)
,并且您的调用类似于
call wh.sp_架构.my_sp('2018':STRING,'abc'::STRING);
尝试通过以下查询语法解决此错误
调用database_name.schema.MY_SP('database_name','schema');这是一个授权问题的简单案例。作为SECURITYADMIN,如果您对正在使用的角色应用了必要的授权
SQL compilation error: Invalid identifier my_sp.
这是由于javascript SP参数区分大小写,因此需要按如下方式修改代码(将arg更改为arg):
显然,这在2019年5月是错误的。Asker必须提前访问(并且应该注意到这一点)。。。
{sqlText: `CREATE OR REPLACE TABLE wh.table_schema.RAW_`+ARG2+`_`+ARG1+` LIKE wh.temp_schema.RAW_`+ARG2+`_TEMPLATE`}