关于存储过程调用的问题
foreach select branch into Vbranch from jigoucallmyproc(Vbranch) returning n;
end foreach
上面的语句执行后,myproc仅把foreach 搜寻出的第一个值作为参数执行了一次后退出了,branch应该有很多值得,但是都不能执行到。
是不是foreach中不能循环执行存储过程呀? 可以在存储过程中再调存储过程的。请加 with hold。 加trace语句调试了一下,在myproc之前的可以打印出来,但是在紧跟myproc之后的就打印不出,真是搞不明白。 callmyproc(Vbranch) returning n;
只是把myproc()过程的结果放入n变量。并不返回值。
试试
return myproc(Vbranch) with resume ;
还可以
callmyproc(Vbranch) returning n;
return n with resume;
[ 本帖最后由 wenlq 于 2008-2-5 13:01 编辑 ] 好像不行吧,在这里执行“return myproc(Vbranch) with recume;”的话,就直接返回,退调用过程了吧。我试了,由于外层声明的返回值为三个,所以报错,编译不过去。您好像误会我的意思了,我是想让myproc(Vbranch)可以被循环调用,但是它只是执行循环的第一个值,也就是只执行了一次就退出调用过程了。没有按我的设想循环的被调用。
[ 本帖最后由 cabbage_rose 于 2008-2-5 13:15 编辑 ] 如果仅仅是 这3句
foreach select branch into Vbranch from jigou
callmyproc(Vbranch) returning n;
end foreach
n应该取到 最后一个值。 myproc(Vbranch) 实际上是一个过程,我不是为的要它的返回值,返回值仅仅是表达存储过程成功与失败的。myproc过程中要对数据做一些处理的,你是不是以为调用myproc是为了得到它的返回值呀?我的表述可能不太清楚。 在foreach中加with hold后,可以执行
感谢wenlq和cloudflashes的帮助
with hold 加在哪个地方
:) :)
页:
[1]