Snowflake Native App无法访问安装账户表的解决办法
Snowflake Native App无法访问安装账户表的问题解决
问题背景
开发Snowflake Native App时,已通过前端授权按钮授予安装账户中dev.dev.t表的访问权限,但测试存储过程执行失败。执行SHOW REFERENCES IN APPLICATION DATA_FIT_APP_MYAPP;确认目标表引用已存在。
原测试存储过程代码:
create or replace procedure app_instance_schema.p_select(t varchar ) returns varchar language sql as $$ declare query varchar default 'select * from ' || t; begin execute immediate :query ; return 'ok'; end; $$;
解决方法
方法1:使用Reference语法修改存储过程
修改存储过程,采用reference()函数访问目标表,代码如下:
create or replace procedure app_instance_schema.p_select(t varchar ) returns varchar language sql as $$ declare query varchar default 'select * from reference(''' || t || ''')'; begin execute immediate :query ; return 'ok'; end; $$;
对应底层SQL写法为select * from reference('t')。同时需要在manifest.yml中配置对应引用规则,支持前端授权选择:
references: - t: label: "t table" description: "Select table" privileges: - SELECT object_type: Table multi_valued: false register_callback: app_instance_schema.update_reference
注意:manifest配置中的引用名称“t”必须与存储过程中使用的名称完全一致。
方法2:直接给应用授予权限(更优方案)
通过给应用直接授予目标表的访问权限,可以跳过Reference语法,直接在存储过程中使用表名访问。
内容的提问来源于stack exchange,提问作者pawelofficial
相关产品推荐
相关产品推荐

