我试图在特定模式下检索数据库中所有表的名称,但这仅在信息模式下有效,而对其他模式返回null。这是我的尝试:
CREATE PROCEDURE tablename(DB VARCHAR,SC VARCHAR)
RETURNS array
LANGUAGE JAVASCRIPT
AS
$$
var t = [];
var stmt = snowflake.createStatement({
sqlText: "SELECT table_name FROM "+ DB +".information_schema.TABLES where TABLE_TYPE='BASE_TABLE';"});
var e = stmt.execute();
while(e.next())
{
var x = r.getColumnValue('table_name');
t.push(x);
}
return t;
$$;
答案 0 :(得分:2)
information_schema.TABLES仅显示已被授予会话当前角色的访问权限的对象。
也许您缺少某些特权,这就是为什么您看不到其他表,而只看到information_schema中的表的原因?
要检查是否可以使用SHOW GRANTS。
更多信息:https://docs.snowflake.com/en/sql-reference/info-schema/tables.html 和https://docs.snowflake.com/en/sql-reference/sql/show-grants.html
亲切的问候:-)