【问题标题】:Can we use identifier function inside UDTF with its argument coming from the UDTF arguments in Snowflake?我们可以在 UDTF 中使用标识符函数,其参数来自 Snowflake 中的 UDTF 参数吗?
【发布时间】:2020-05-26 22:34:21
【问题描述】:

下面是这个 UDTF 的示例:

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

当试图部署这个函数时,它会抛出一个语法错误异常,抱怨标识符后面的表达式无效。 有什么想法吗?

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    UDF 并非旨在创建“动态 SQL”。您可以使用标识符函数,但它应该使用文字调用:

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

    它不会和普通 SQL 不同:

    SELECT cname FROM yourtable
    

    如果要生成动态 SQL,则应使用 JavaScript 存储过程:

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

    【讨论】:

    • 知道为什么他们有这么严格的限制吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多