2012-06-02 42 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直接看它是否是一个语法问题第一。