#sql #snowflake-cloud-data-platform
#sql #snowflake-облачная платформа данных
Вопрос:
Как мне найти имя таблицы в хранимой процедуре просмотр в snowflake с помощью snowsql?
Оператор SQL в эквиваленте SQL Sever является:
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
Комментарии:
1. Можете ли вы добавить больше контекста? Я не знаю SQL server, но я хочу знать, что вы подразумеваете под «поиском имени таблицы в хранимой процедуре»
2. В настоящее время у Snowflake нет подобных ссылок в
INFORMATION_SCHEMA
. @FelipeHoffa — Я полагаю, что вопрос заключается в том, как найти хранимые процедуры, которые ссылаются на определенную таблицу.3. Я пытаюсь найти код snowsql, чтобы увидеть, какие сохраненные процедуры ссылаются на определенную таблицу.
Ответ №1:
Определения хранимых процедур Snowflake хранятся в объекте в общей базе данных Snowfalke, в схеме Account_Usage и в табличных функциях.
выберите * из функций, где верхнее значение (function_definition) похоже на ‘% TABLENAME%’ и function_language = ‘JAVASCRIPT’;
Это не точно, но должно приблизить вас к тому, где вы хотите быть.
Ответ №2:
Как упоминалось в других ответах, прямого эквивалента не существует. Ниже приведен простой и подверженный ошибкам способ добиться чего-то подобного.
SELECT procedure_schema,procedure_name, procedure_definition
из information_schema.procedures
, где rlike(procedure_definition,’.bTABLE_NAMEb.‘,’si’);
Очень похоже на предыдущий ответ, но здесь я использую information_schema.procedures . Я также использую регулярное выражение, чтобы сопоставлять только имя таблицы и избегать частичных совпадений. Также обратите внимание на параметры s и i в r, например, s используется для разрешения . в регулярном выражении сопоставление новых строк и i — это просто сделать шаблон нечувствительным к регистру.