我在一个Grails应用程序中使用Groovy SQL来查询一个没有作为应用程序的数据源连接的数据库。对于页面,默认情况下,SQL select语句不包含order By子句。如果用户单击其中一个标记,我希望动态更改查询以在指定方向上对指定列进行排序。当我试图将order by子句添加到select语句中时,我得到一个(捕获的) SQLException,它表明我的查询没有正确结束。
我的问题是:
sql.eachRow("select * from mytable where type = 'SUMMARY' and acolumn=${columnValue} order by ${sortColumn} ${sortOrder}") { row ->
                    results << row.toRowResult()
                }我可以通过对返回的列表进行排序来解决这个问题,但是如果可能的话,我希望在SQL语句中这样做。这是一个已知的问题吗?
发布于 2011-12-01 23:03:11
这是Groovy试图用?替换所有的参数,并制作一个PreparedStatement
这不适用于ORDER BY子句,因此需要使用use Sql.expand
尝试:
sql.eachRow( "select * from mytable where type = 'SUMMARY' and acolumn=${columnValue} order by ${Sql.expand(sortColumn)} ${Sql.expand(sortOrder)}") { row ->
  results << row.toRowResult()
}https://stackoverflow.com/questions/8343258
复制相似问题