UDF «Снежинка» вызывает функцию «Показать акции» - PullRequest
1 голос
/ 09 января 2020

Можно ли выполнить вызов функции «Показать общие ресурсы» в FUNCTION или PROCEDURE в Snowflake? Поскольку в информационной схеме нет объекта метаданных для запроса информации об общих ресурсах, мы ищем способ создания UDF для получения этих метаданных и воздействия на результаты.

При попытке выполнить следующий код :

CREATE OR REPLACE PROCEDURE get_share_metadata()
RETURNS VARIANT
LANGUAGE javascript
AS
$$
    var x=snowflake.execute( { sqlText: "SHOW SHARES" } );
$$
;
call get_share_metadata();

Возвращается следующая ошибка: Ошибка выполнения в хранимой процедуре GET_SHARE_METADATA: Ошибка выполнения хранимой процедуры: неподдерживаемый тип оператора 'SHOW SHARE'. На Snowflake.execute, строка 2, позиция 20

Ответы [ 2 ]

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

Вы можете выполнить команду SHOW .... внутри хранимой процедуры ONLY , если для процедуры задано значение EXECUTE AS CALLER.

При выполнении в качестве вызывающей стороны роль, выполняющая процедуру , должна иметь права на выполнение команд в процедуре.

Примеры:

  • SHOW SHARES доступен только для роли ACCOUNTADMIN (технически любая роль может успешно выполнить команду, но результаты ограничены только accountadmin ).
  • SHOW USERS может успешно выполняться только с любой ролью, имеющей привилегию MANAGE GRANTS для учетной записи.

Документация:

https://docs.snowflake.net/manuals/sql-reference/stored-procedures-usage.html#label хранимые процедуры для владельцев прав

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

Я не уверен насчет функции и хранимой процедуры для этого, но в зависимости от того, что вы пытаетесь сделать, рассматривали ли вы только использование RESULT_SCAN?

SHOW SHARES;
SELECT * FROM TABLE(RESULT_SCAN(last_query_id()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...