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

时间:2010-03-10 01:51:22

标签: groovy functional-programming gstring

我希望使用Groovy作为一种功能语言,而不是Java,但是一个似乎有问题的领域是当我调用存储过程时,因为我在一次调用中传递了40个参数,但是,在我打电话之前,我还需要做一些准备工作。

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

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

如果我可以在查询中执行这些类型的调用会很有帮助,因为它会更有意义地发生了什么,因为存储过程中有太多的参数,所以不得不四处寻找进入的内容初始化ise manager可能会有问题。

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

1 个答案:

答案 0 :(得分:2)

您可以通过以这种方式将它们嵌入字符串中来实现:

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}, ...}"""

没有用长串烦恼自己。