读书人

for循环中调用存储过程参数不传递的有

发布时间: 2012-04-10 21:03:56 作者: rapoo

for循环中调用存储过程参数不传递的问题
CREATE procedure up_prc1
@emp_id int,
@con_no int
AS
select @emp_id,@con_no
GO
上面是一个简单的SQLSERVER2000存储过程,返回传进去的参数。PB11.5中调用如下:
declare up_getcnum procedure for up_prc1
@emp_id=:ll_empid,@con_no=:ll_conno;
for i=1 to dw_print.rowcount()
ll_empid = dw_print.object.emp_id[i]
ll_conno = dw_print.object.con_no[i]
messageBox(String(ll_empid),String(ll_conno))
EXECUTE up_getcnum ;
fetch up_getcnum into :ll_temp1,:ll_temp2;
messageBox(String(ll_temp1),String(ll_temp2))
Next

这样执行的结果就是fetch以后一直返回的是dw_print第一行的数据,也就是循环后没有把第2行取到的数据传进去
请问是什么问题啊

close up_getcnum;

[解决办法]
CURSOR/procedure ,在完成所有 fetch 后要CLOSE.下次才会再次打开.



fetch up_getcnum into :ll_temp1,:ll_temp2;

之后要

close up_getcnum;


[解决办法]


declare up_getcnum procedure for up_prc1
@emp_id=:ll_empid,@con_no=:ll_conno;

写到for 循环里,并且在循环结束前close 试一下。

[解决办法]
你需要在循环里面定义存储过程的使用开始,并在循环过程中定义他的结束。

读书人网 >PB

热点推荐