Closed blazert closed 5 years ago
附上去掉order by语句执行的sql WITH selectTemp AS ( SELECT TOP 100 PERCENT ROW_NUMBER () OVER ( ORDER BY CURRENT_TIMESTAMP ) AS __row_number__, ID, HardWareID, RoomNo, CallTermStatus, winsockIndex, IP, lastuserid, groups = ( STUFF(( SELECT ',' + c.GroupName FROM HDCallSpecail b LEFT JOIN GroupSet c ON b.GroupNo= c.GroupNO AND b.CtrllerId= c.CtrllerId WHERE a.CtrllerId= b.CtrllerId AND a.HardWareID= b.HardWareID FOR xml path ( '' )), 1, 1, '' )) FROM HardWareSet a WHERE CtrllerId =? ) SELECT
FROM selectTemp WHERE row_number BETWEEN 1 AND 10 ORDER BY row_number
解析 sql 用的jsqlparser
当前使用版本(必须填写清楚,否则不予处理)
3.0.3
该问题是怎么引起的?(请使用最新版(具体版本查看CHANGELOG.md),如还有该问题再提 issue!)
分页查询
重现步骤
报错信息
输入sql语句如下: SELECT ID, HardWareID, RoomNo, CallTermStatus, winsockIndex, IP, lastuserid, groups=( STUFF(( SELECT ',' + c.GroupName FROM HDCallSpecail b LEFT JOIN GroupSet c ON b.GroupNo= c.GroupNO AND b.CtrllerId= c.CtrllerId WHERE a.CtrllerId= b.CtrllerId AND a.HardWareID= b.HardWareID ORDER BY b.Specail FOR xml path ( '' )), 1, 1, '' )) FROM HardWareSet a WHERE CtrllerId =#{ctrId} 实际执行的语句中这句出现问题: WITH selectTemp AS ( SELECT TOP 100 PERCENT ROW_NUMBER () OVER ( ORDER BY b.Specail FOR xml path ( '' )), 1, 1, '' )) FROM HardWareSet a WHERE CtrllerId =? ) AS __row_number__, ID, HardWareID, RoomNo, CallTermStatus, winsockIndex, IP, lastuserid, groups = ( STUFF(( SELECT ',' + c.GroupName FROM HDCallSpecail b LEFT JOIN GroupSet c ON b.GroupNo= c.GroupNO AND b.CtrllerId= c.CtrllerId WHERE a.CtrllerId= b.CtrllerId AND a.HardWareID= b.HardWareID ORDER BY b.Specail FOR xml path ( '' )), 1, 1, '' )) FROM HardWareSet a WHERE CtrllerId =? ) SELECT
FROM selectTemp WHERE row_number BETWEEN 1 AND 10 ORDER BY row_number 错误信息:Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 没有为参数号 2 设置值。
我把order by 去掉 执行通过 貌试解析sql时 处理聚合函数有问题