Stored procedures 在DB210.x版本中编写存储过程

Stored procedures 在DB210.x版本中编写存储过程,stored-procedures,db2,db2-luw,database-cursor,Stored Procedures,Db2,Db2 Luw,Database Cursor,我是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,va

我是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行。 任何类型的提示/答案都会有帮助


谢谢

什么平台和版本的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;
您希望光标本身
返回到客户机
,而不希望存储过程从中
获取

可能仅适用于DB2forIBMi

还请注意,虽然许多示例使用
C1
作为光标名称,但最佳做法是使用唯一的名称。如果您的客户机碰巧调用了两个存储的进程,并且都使用了
C1
,您将遇到问题。

什么平台和版本的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;
您希望光标本身
返回到客户机
,而不希望存储过程从中
获取

可能仅适用于DB2forIBMi

还请注意,虽然许多示例使用
C1
作为光标名称,但最佳做法是使用唯一的名称。如果您的客户端碰巧调用了两个存储的进程,并且都使用了
C1
,您将遇到问题。

谢谢您的回答。版本是10.5.7。我只是给出了一个伪代码,并将确保在实际代码中使用正确的命名约定。感谢您的观察:)我认为您关于光标名称的评论不正确。该名称是过程代码的本地名称,调用方不知道,因此在所有过程中以您想要的方式命名游标是完全安全的。@Mustacio您可能对Db2 LUW是正确的…这是OP使用的…但我已经看到使用C1会导致Db2 for IBM I出现问题。谢谢您的回答。版本是10.5.7。我只是给出了一个伪代码,并将确保在实际代码中使用正确的命名约定。感谢您的观察:)我认为您关于光标名称的评论不正确。该名称是过程代码的本地名称,调用方不知道,因此在所有过程中以您想要的方式命名游标是完全安全的。@Mustacio您可能对Db2 LUW是正确的…这是OP正在使用的…但我已经看到使用C1会导致Db2 for IBM I出现问题。