sql - DB2 - 多结果集存储过程
问题描述
所以首先 - 我不确定我的问题是出在我的 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
,我知道我应该期待Result
和Result-2
。(抱歉重删)
DBeaver 版本:5.2.5
DB2 版本:9.5 修订包 5
操作系统:Windows
解决方案
由具有 dbeaver 配置更改的 ballbreaker 解决。
仅当您的数据库连接使用 dbeaver 提供的名为“DB2 LUW 8.x”的“旧”驱动程序时,才会出现此症状。该驱动程序不会随当前 dbeaver 版本自动安装(但可以手动下载),因为默认情况下会随当前 dbeaver 版本安装更新的驱动程序。
如果您的数据库连接使用名为“DB2 LUW”的驱动程序(不同于“DB2 LUW 8.x”),那么您将不会遇到这种症状。
如果您的连接使用旧驱动程序(DB2 LUW 8.x),那么在数据库的连接属性下,有一个“编辑驱动程序设置”-> Adv。参数->“驱动程序支持多个结果”。使用旧驱动程序时,默认情况下禁用此设置,从而导致症状。对于较新的驱动程序,没有这样的设置。
推荐阅读
- c - 了解 Linux 中的 RS-485
- javascript - 如何基于字符串创建 Firestore 安全文档 ID
- ios - AppsFlyer 的 SDK 收据验证失败
- python - 关于 pandas 的 DataFrame
- excel - VBA中的公式问题
- c# - 更改后不更新计数
- html - 不能在 innerHTML 属性绑定中使用另一个组件
- java - 使用带有 Cloudera 驱动程序和 Kerberos 身份验证的 JAVA 连接到 HIVE
- powershell - 使用 powershell 读取文本文件仅适用于 powershell 屏幕命令,但不适用于脚本
- python-3.x - 询问用户是否要重新开始游戏?