2012-06-02 235 views
0

我有一個調用Groovy的SQL對象的一些Groovy代碼:CASE語句

Sql sql = new Sql(dataSource) 
sql.execute(insert) 

它已經在過去的工作很好,但我現在有一個我試圖用一個案例來模擬一些有條件的邏輯聲明像CASE WHEN a.pick = ${somevalue} THEN ${100} ELSE 0 END CASE"

不過,我得到的是說,它不承認a運行時錯誤,但我相信這是一個事實,即它不承認在一般的CASE語句,症狀爲a是公認查詢中的其他地方並不是什麼新東西。我怎樣才能做到這一點?謝謝。

+0

這是堆棧跟蹤中的MySQL錯誤嗎?如果是這樣,那麼你的SQL語法並不是一個問題,而不是grails。如果問題依然存在,請發佈SQL。 –

回答

1

我猜這可能是你的mysql語法的問題,但我不能確認,因爲它沒有提供。或者,但不是那麼優雅;你可以使用Groovy處理這...

def sqlInsert = "insert into foo (bar) values (${(foo.pick == someValue)? 100 : 0})" 

然而,首先你要打印你的失敗查詢並運行它在MySQL直接看它是否是一個語法問題第一。