当前位置: 代码迷 >> PB >> for循环中调用存储过程参数不传递的有关问题
  详细解决方案

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

热度:42   发布时间:2016-04-29 08:23:04.0
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 试一下。

------解决方案--------------------
你需要在循环里面定义存储过程的使用开始,并在循环过程中定义他的结束。
  相关解决方案