我在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() }
解决方法
这是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() }