是否可以在Snowflake的FUNCTION或PROCEDURE中发出“ Show Shares”函数调用?由于信息模式中没有元数据对象可以查询有关共享的信息,因此我们正在寻找一种创建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
我不确定函数与存储过程是否相关,但是根据您要执行的操作,是否仅使用RESULT_SCAN进行了调查?
SHOW SHARES;
SELECT * FROM TABLE(RESULT_SCAN(last_query_id()));
如果将存储过程设置为EXECUTE AS CALLER,则可以在存储过程ONLY中执行SHOW ....
命令。
作为调用者执行时,执行过程必须]的角色具有执行过程中命令的特权。
示例:
SHOW SHARES
仅可用于ACCOUNTADMIN角色(从技术上讲,任何角色都可以成功运行命令,但结果仅限于accountadmin)。SHOW USERS
仅可以使用具有该帐户的MANAGE GRANTS特权的任何角色来成功执行。文档: