【问题标题】:timestamp() do not take function parameter as input?timestamp() 不将函数参数作为输入?
【发布时间】:2014-12-31 22:32:58
【问题描述】:

我在 postgresql 中使用 sql

cast(col as timestamp($1))

它给了我关于参数的错误

当我直接给出数字时,sql可以工作:

cast(col as timestamp(1))

那么timestamp不带函数参数?

【问题讨论】:

    标签: sql postgresql plpgsql dynamic-sql


    【解决方案1】:

    precision modifier of the timestamp typename 类型的一部分,不能在普通 SQL 中参数化。这不是一个函数,即使带括号的语法看起来一样。

    为此,您需要动态 SQL。在 PL/pgSQL 函数中,将语句构建为字符串并使用EXECUTE 运行它。比如:

    EXECUTE 'SELECT col::timestamp(' || $1 || ')'
    INTO my_var;
    

    $1integer。不是text 之类的字符串类型,否则可能存在 SQL 注入漏洞。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 2020-12-23
      • 2014-01-22
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多