Jfinal调用存储过程不返回结果

天生蛋疼菊紧 发布于 2016/08/18 21:34
阅读 597
收藏 0

@JFinal 你好,波总又来请教了。

以上是两个存储过程,参数很简单。带一个id,但是第一个成功执行不并且结果正确返回。第二个却执行失败。

另人奇怪的是,第二个存储过程把调用名字和参数拿出来,用数据库的控制台执行,确实毫无问题的,如图


这是为什么呢

加载中
0
JFinal
JFinal
错误提示出错的那个存储过程没有返回结果集,此时,如果再去读数据会报错。在使用 Db.find(sql) 执行存储过程时,让存集过程多少也返回下数据,哪怕是一条记录也可。
天生蛋疼菊紧
天生蛋疼菊紧
@JFinal ,麻烦波总看下我本答案的引用回复
0
天生蛋疼菊紧
天生蛋疼菊紧

引用来自“JFinal”的评论

错误提示出错的那个存储过程没有返回结果集,此时,如果再去读数据会报错。在使用 Db.find(sql) 执行存储过程时,让存集过程多少也返回下数据,哪怕是一条记录也可。

@JFinal 波总,出错的那个存储过程是有结果集返回的,你注意看下,我把调用语句和参数放控制台执行。

结果集很快就出来,没有慢查询。

但是调用语句和参数用Db.find去执行却提示没有结果集返回。很奇怪啊


JFinal
JFinal
注意看一下有没有手误,把正确的数据从控制台 copy 到代码中去,把 java 代码中的先删掉,有时候肉眼是看不出错误的,例如全角半角、大小写一不小心就容易出问题
0
南湖船老大
南湖船老大
exec和call的区别吧
0
南湖船老大
南湖船老大
我没记错的话,exec仅执行不返回结果。call才是返回结果的。不同的数据库有一些差异
0
天生蛋疼菊紧
天生蛋疼菊紧

引用来自“天生蛋疼菊紧”的评论

引用来自“JFinal”的评论

错误提示出错的那个存储过程没有返回结果集,此时,如果再去读数据会报错。在使用 Db.find(sql) 执行存储过程时,让存集过程多少也返回下数据,哪怕是一条记录也可。

@JFinal 波总,出错的那个存储过程是有结果集返回的,你注意看下,我把调用语句和参数放控制台执行。

结果集很快就出来,没有慢查询。

但是调用语句和参数用Db.find去执行却提示没有结果集返回。很奇怪啊


感谢波总这么耐心的答复。

这个问题已经找得到原因了。sp里要加SET NOCOUNT ON

我这两个存储过程里,能成功执行的那个里面就一个查询语句

而第二个存储过程则较为复杂,里面用了临时表方案,有两个个select语句

第二个存储过程执行的时候,没有SET NOCOUNT ON,才提示无结果集返回的。

0
天生蛋疼菊紧
天生蛋疼菊紧

引用来自“南湖船老大”的评论

我没记错的话,exec仅执行不返回结果。call才是返回结果的。不同的数据库有一些差异

谢谢,exec和call都试了下,并无明显差异。

我这个问题是因为set nocount on造成的

返回顶部
顶部