代码之家  ›  专栏  ›  技术社区  ›  James Black

如何在groovy的gstring数据库查询中执行函数

  •  0
  • James Black  · 技术社区  · 16 年前

    例如,我需要一个时间戳,所以我会有类似的东西(所以可能会有错误,但这是我想要的概念)

    def timestamp = (int) (Calendar.instance.timeInMillis/1000)
    def ismanager = input.isManager ? 1 : 0
    sql.call("{call myfunction($timestamp, ..., $ismanager, ..."})
    

    如果我能在查询中执行这些类型的调用,这会很有帮助,因为这样做更有意义,因为存储过程中有太多的参数,所以必须四处寻找初始化过程中发生了什么 ise manager

    有没有办法在调用gstring中执行这些函数?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Jack    16 年前

    可以通过以下方式将它们嵌入字符串中:

    sql.call("{call myfunction(${(int) (Calendar.instance.timeInMillis/1000)}, 
                              ..., ${input.isManager ? 1 : 0}, ...}")
    

    然后,由于SQL不应该在一个单词的中间忽略断线(我绝对不记得这一点),所以你可以使用三重双转义字符串(多么强大的名字):

    """call myfunction${(int) (Calendar.instance.timeInMillis/1000)}
    ..., ${input.isManager ? 1 : 0}, ...}"""
    

    而不是用一根长长的绳子来烦扰自己。

    推荐文章