NutzCN Logo
问答 Oracle数据库使用Daos.queryCount查询某sql的结果条数错误的问题
发布于 3213天前 作者 qq_386eea42 2257 次浏览 复制 上一个帖子 下一个帖子
标签:

Oracle数据库,使用“Daos.queryCount(dao(), sql.toString())”查询sql的结果条数,发生“ORA-00933: SQL 命令未正确结束”错误,
查看源码如下:
/**
* 查询某sql的结果条数
*/
public static long queryCount(Dao dao, String sql) {
Sql sql2 = Sqls.fetchInt("select count(1) from ("
+ sql
+ ") as nutz_tmp"
+ System.currentTimeMillis());
dao.execute(sql2);
return sql2.getInt();
}
由于Oracle不支持as,所以建议删除as即可。

4 回复

oracle版本多少? 驱动版本多少?

oracle版本: Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
驱动版本: oracle6.jar 11.2.0.4.0

修改为以下能够使用:
public static long queryCount(Dao dao, String sql) {
String tmpTable = "nutz_tmp_";
if (!dao.meta().isOracle())
tmpTable = "as " + tmpTable + R.UU32();
Sql sql2 = Sqls.fetchInt("select count(1) from ("
+ sql
+ ")" + tmpTable);
dao.execute(sql2);
return sql2.getInt();
}
在oracle和mysql下都能用,oracle不支持“as”和以“
”开头的标识符

添加回复
请先登陆
回到顶部