如何使用snowsql在snowflake中的存储过程\视图中查找表名?
SQL Sever 中等价的 SQL 语句是:
select distinct
[Table Name] = o.Name, [Found In] = sp.Name, sp.type_desc
from
sys.objects o
inner join
sys.sql_expression_dependencies sd on o.object_id = sd.referenced_id
inner join
sys.objects sp on sd.referencing_id = sp.object_id
and sp.type in ('P', 'FN')
where
o.name = 'YourTableName'
order by
sp.Name
答案 0 :(得分:0)
Snowflake 存储过程定义存储在共享数据库 Snowfalke 的对象中、模式 Account_Usage 和表函数中。
选择* 从函数 其中 upper(function_definition) 像 '%TABLENAME%' 和 function_language = 'JAVASCRIPT';
这并不准确,但应该能让你接近你想去的地方。
答案 1 :(得分:0)
正如其他答案中提到的,没有直接的等价物。以下是实现类似目标的一种笨拙且容易出错的方法。
SELECT procedure_schema,procedure_name, procedure_definition
来自 information_schema.procedures where rlike(procedure_definition,'.\bTABLE_NAME\b.','si');
与之前的答案非常相似,但这里我使用的是 information_schema.procedures。我还使用正则表达式只匹配表名并避免部分匹配。还要注意 r 中的 s 和 i 参数,就像 s 用于允许 .在正则表达式中匹配新行,而 i 只是使模式不区分大小写。