2010-03-10 92 views
0

我希望將Groovy作爲一種功能性語言,而不是我可以使用Java,但是一個似乎是問題的區域是當我調用存儲過程時,我在一次通話中傳遞了40個參數,但是,我還需要做一些準備工作,在我打電話之前的那一刻。如何在Groovy中執行gstring數據庫查詢中的函數

因此,舉例來說,我需要一個時間戳,所以我將有類似的東西(所以有可能是錯誤的,但我會爲理念)

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

這將是有益的如果我可以在查詢中執行這些類型的調用,因爲它會更有意義,因爲存儲過程中有很多參數,所以必須查看初始化ise manager的內容可能會有問題。

有沒有辦法讓這些函數在調用gstring中執行?

回答

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

,沒有惱人的長字符串:你可以用三雙轉義弦(多麼強大的名稱)。

+0

我目前只是用plus運算符連接它們,但明天我會試試這個,謝謝。 – 2010-03-10 02:48:01

相關問題