Процедура магазина снежинок Выполнить от имени владельца - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь создать 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 () и какие параметры могут go в функцию / метод getColumnValue.

1 Ответ

1 голос
/ 09 января 2020

Хранимые процедуры не возвращают таблицы, поэтому я не думаю, что они действительно были созданы. Вот обходной путь: Использование RESULT_SCAN для извлечения результата из хранимой процедуры

...