DB2-多个结果集存储过程

时间:2018-12-04 20:43:11

标签: sql db2 dbeaver

首先,我不确定我的问题是否出在我的DB2代码或DBeaver上的设置上。

在运行以下代码时,我在DBeaver中仅显示一个结果集时遇到问题。我的意图是创建一个向UI返回2个结果集的单一过程。这样做的目的是使我可以一次运行多个脚本,然后将所有结果集放在同一位置。除了DBeaver之外,我没有任何其他软件,因此我无法在任何其他管理工作室上对其进行完全测试。

我正在这样做,以便如果我不在办公室,其他人可以轻松地运行我的查询。让我知道是否需要其他信息/您有任何疑问。表/列的名称已经弥补了这个问题。

CREATE PROCEDURE dbo.procedure_name (IN start_date date, IN end_date date) 
DYNAMIC RESULT SETS 2   
BEGIN

DECLARE C1 CURSOR WITH RETURN TO CALLER FOR
    SELECT 
        d.Student_NUM AS student_number,
        c.Teacher_NUM AS teacher_number,
    FROM dbo.c AS teachers
    INNER JOIN dbo.d AS student ON c.class_num= d.class_num;
    WHERE d.entry_date >= start_date and d.graduation_date < end_date


DECLARE C2 CURSOR WITH RETURN TO CALLER FOR
    SELECT 
        c.birth_date AS teacher_birth_date,
    FROM dbo.c AS teachers;

    OPEN C2;
    OPEN C1;   
END

我只得到C2的结果

如果我切换OPEN的顺序,我只会得到C1。似乎它只返回第一个OPEN光标。

更新

这是存储过程的调用方式,也是我所看到的返回集。 注意:返回集的名称显示为C,我知道我应该期待ResultResult-2。 (很抱歉,编辑很重)

enter image description here

DBeaver版本:5.2.5

DB2版本:9.5 Fix Pack 5

操作系统:Windows

2 个答案:

答案 0 :(得分:1)

由断球者解决,并更改了dbeaver。

仅当您的数据库连接使用dbeaver随附的名为“ DB2 LUW 8.x”的“旧”驱动程序时,才会出现此症状。该驱动程序不会自动与当前dbeaver版本一起安装(但可以手动下载),因为默认情况下,当前dbeaver版本会安装一个更新的驱动程序。

如果您的数据库连接使用名为“ DB2 LUW”的驱动程序(与“ DB2 LUW 8.x”不同),那么您将不会遇到此症状。

如果您的连接使用旧的驱动程序(DB2 LUW 8.x),则在数据库的连接属性下,有一个“编辑驱动程序设置”->高级。参数->“驱动程序支持多个结果”。对于旧的驱动程序,默认情况下会禁用此设置,这会导致出现症状。对于较新的驱动程序,没有这样的设置。

答案 1 :(得分:0)

正如@mao和@ballBreaker所说,只是要弄清楚,必须遵循以下步骤。

提示“编辑连接”。

Edit Connection

转到“连接设置”部分,然后单击“编辑驱动程序设置”->高级。参数->“驱动程序支持多个结果”。

Edit Driver Settings Adv. parameters