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`}