我正在尝试创建一个SP,并以所有者身份执行,以返回表列表。 SP正在创建,但是调用它会引发错误。

create database trash;
CREATE OR REPLACE procedure trash.public.sandbox_tables()
  RETURNS TABLE (TABLE_SCHEMA varchar,TABLE_NAME varchar)
   LANGUAGE JAVASCRIPT
   EXECUTE AS OWNER
as
$$
var sql_cmd = `select TABLE_SCHEMA,TABLE_NAME
      from SNOWFLAKE.ACCOUNT_USAGE.TABLES
      where TABLE_CATALOG ='SANDBOX'
      and   table_type='BASE TABLE'
      and   DELETED is NULL
      and   current_date()-CREATED::date >=90`;
var rs = snowflake.execute( {sqlText: sql_cmd} );
rs.next();
var result = rs.getColumnValue();
return result
$$;

call trash.public.sandbox_tables()


错误:SQL compilation error: Invalid identifier TRASH.PUBLIC.SANDBOX_TABLES

不知道什么是无效标识符,如果您能解释next()在做什么以及可以将哪些参数放入getColumnValue函数/方法中,将不胜感激。

最佳答案

存储过程不返回表,因此我认为它不是实际创建的。解决方法:Using RESULT_SCAN to Retrieve the Result from a Stored Procedure

关于javascript - 雪花存储过程以所有者身份执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59655963/

10-16 14:58
查看更多