我是db2新手,我正在编写一个db2过程,如下所示
create procedure ret_mult_rows(in var1 varchar(20),
out var2 varchar(20),
out var3 varchar(20))
begin
declare c1 cursor with return to caller for
select emp_name,emp_city from employee;
open c1;
fetch c1 into var2,var3;
close c1;
end;基本上,作为一个示例,employee表可能包含100行,我希望将所有100行返回给调用程序(在本例中是一个java程序)。但是,当我使用RapidSQL以独立模式执行存储过程时,它只显示1行。需要什么样的更改才能显示Rapid SQL中的所有100行。任何类型的指针/答案都会很有帮助。
谢谢
发布于 2020-12-18 06:42:24
Db2的平台和版本是什么?你看过手册了吗?
存储过程输出变量和返回(游标)结果集是有区别的。
你的代码应该看起来像这样...
create procedure ret_mult_rows(in var1 varchar(20))
begin
declare c1 cursor with return to caller for
select emp_name,emp_city from employee;
open c1;
end;您希望游标本身为return to client,而不是希望存储过程从游标中fetch。
可能只适用于用于IBM 的Db2
还要注意,虽然许多示例使用C1作为游标名称,但最佳实践是使用唯一的名称。如果您的客户端碰巧调用了两个存储的procs,并且都使用了C1,那么您就会遇到问题。
https://stackoverflow.com/questions/65349177
复制相似问题