【发布时间】:2020-08-10 10:47:37
【问题描述】:
我使用 DB2 for z/OS 作为我的数据库。我在 DB2 中编写了一个存储过程,它将返回一些结果集。目前我已经声明了一个游标并在存储过程结束时调用 OPEN Cur。我正在从 Java 调用我的程序,我正在使用 ResultSet resultSet = callableStatement.getResultSet();My SP 获取数百条记录的结果集。但是当表包含数百万个数据时会失败:
原因:com.ibm.db2.jcc.am.SqlException:DB2 SQL 错误: SQLCODE=-904, SQLSTATE=57011, SQLERRMC=00C90084;00000100;DB2-MANAGED 没有二次分配或 US 的空间,DRIVER=4.24.92
我想知道
- 是否可以在我的 SP 中将 Cursor 作为 OUT 参数返回?
- 使用OPEN curs way和CURSOR作为OUT参数取数据有什么区别?
- 数据量大时如何解决问题?
- CURSOR 作为 OUT 参数能解决问题吗?
已编辑(SP 详细信息):
DYNAMIC RESULT SET 1
P1: BEGIN
-- Declare cursor
DECLARE cursor1 CURSOR WITH RETURN FOR
select a.TABLE_A_ID as TABLE_A_ID,
b.TABLE_B_ID as TABLE_B_ID
from TABLE_A a
left join TABLE_C c on
a.TABLE_A_ID = c.TABLE_A_ID
inner join TABLE_B b on
b.CONTXT_ID = a.CONTXT_ID
AND b.CONTXT_POINT_ID = a.CONTXT_POINT_ID
AND b.CONTXT_ART_ID = a.CONTXT_ART_ID
where c.TABLE_A_ID is null ;
OPEN cursor1;
【问题讨论】:
-
请编辑您的问题以准确指定“失败”的含义,显示确切的错误代码和错误消息。
-
添加错误详情
标签: stored-procedures db2 database-cursor