首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Groovy SQL忽略动态select语句中的order by子句

Groovy SQL忽略动态select语句中的order by子句
EN

Stack Overflow用户
提问于 2011-12-01 22:51:30
回答 1查看 1.2K关注 0票数 3

我在一个Grails应用程序中使用Groovy SQL来查询一个没有作为应用程序的数据源连接的数据库。对于页面,默认情况下,SQL select语句不包含order By子句。如果用户单击其中一个标记,我希望动态更改查询以在指定方向上对指定列进行排序。当我试图将order by子句添加到select语句中时,我得到一个(捕获的) SQLException,它表明我的查询没有正确结束。

我的问题是:

代码语言:javascript
复制
sql.eachRow("select * from mytable where type = 'SUMMARY' and acolumn=${columnValue} order by ${sortColumn} ${sortOrder}") { row ->
                    results << row.toRowResult()
                }

我可以通过对返回的列表进行排序来解决这个问题,但是如果可能的话,我希望在SQL语句中这样做。这是一个已知的问题吗?

EN

Stack Overflow用户

回答已采纳

发布于 2011-12-01 23:03:11

这是Groovy试图用?替换所有的参数,并制作一个PreparedStatement

这不适用于ORDER BY子句,因此需要使用use Sql.expand

尝试:

代码语言:javascript
复制
sql.eachRow( "select * from mytable where type = 'SUMMARY' and acolumn=${columnValue} order by ${Sql.expand(sortColumn)} ${Sql.expand(sortOrder)}") { row ->
  results << row.toRowResult()
}
票数 7
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8343258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档