Можем ли мы использовать функцию идентификатора внутри UDTF с ее аргументом, поступающим из аргументов UDTF в Snowflake? - PullRequest
0 голосов
/ 27 мая 2020

Вот пример того, как этот UDTF должен выглядеть:

create function select2 (tname varchar, cname varchar)
    returns table (value variant)
    as $$
      SELECT IDENTIFIER(cname) FROM IDENTIFIER(tname)
    $$

При попытке развернуть эту функцию он выдает исключение синтаксической ошибки с жалобой на недопустимое выражение после идентификатора. Есть мысли?

1 Ответ

1 голос
/ 27 мая 2020

UDF не предназначены для создания «динамических c SQL». Вы можете использовать функцию идентификатора, но она должна вызываться с помощью литералов:

create function select2 (tname varchar, cname varchar)
    returns table (value varchar)
    as $$
      SELECT IDENTIFIER('cname') FROM IDENTIFIER('yourtable')
    $$

Она не будет отличаться от обычной SQL:

SELECT cname FROM yourtable

Если вы хотите сгенерировать динамику c SQL, вы должны использовать JavaScript хранимые процедуры:

https://docs.snowflake.com/en/sql-reference/stored-procedures-usage.html#label -example-of-Dynami c - sql -in-stored-procedure

...