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 试一下。
------解决方案--------------------
你需要在循环里面定义存储过程的使用开始,并在循环过程中定义他的结束。