找到 1660 篇文章 关于大数据分析

如何使用单个FETCH调用从DB2表中提取多行?

Mandalika
更新于 2020年9月15日 10:51:31

903 次浏览

我们可以使用多行提取的概念,在单个FETCH调用中从DB2表中提取多行。在多行提取中,我们必须使用“WITH ROWSET POSITIONING”子句声明游标。在这种情况下,主机变量应声明为数组。因此,在单个fetch语句中,主机变量数组将填充多个行数据。我们可以遍历主机变量数组来访问此行数据。例如,我们可以声明如下所示的多行提取游标:EXEC SQL DECLARE ORDER_CUR WITH ROWSET POSITIONING FOR ... 阅读更多

如何从未打开的游标中提取数据或打开已打开的游标?

Mandalika
更新于 2020年9月15日 10:49:03

130 次浏览

当我们尝试从未打开的游标中提取数据时,查询将失败。在这种情况下,SQLCA 的 SQLCODE 字段将填充 DB2 错误代码 -501。根据 IBM 文档,-501 错误代码表示:“FETCH 或 CLOSE 语句中标识的游标未打开”当我们尝试打开已打开的游标时,查询将失败,并且我们将在 SQLCA 的 SQLCODE 字段中获得错误代码 -502。根据 IBM 文档,-502 错误代码表示:“FETCH 或 OPEN 语句中标识的游标已打开”... 阅读更多

是否可以在我们对两个表 ORDERS 和 TRANSACTIONS 使用 JOIN 的游标中进行更新?为什么或为什么不?我们如何继续更新这些表中的任何一个?

Mandalika
更新于 2020年9月15日 10:47:15

62 次浏览

当我们在游标声明中使用一个(自连接)或多个表上的 JOIN 时,将创建一个只读游标。我们不能更新只读游标。如果我们想更新 JOIN 中使用的任何表,则必须为所有表声明一个单独的游标,并且必须构建单独的逻辑以更新每个 DB2 表。

在 COBOL-DB2 程序中,如何在发出 COMMIT 后保持游标打开?

Mandalika
更新于 2020年9月15日 10:45:44

2K+ 次浏览

每当我们发出 COMMIT 语句时,所有打开的游标都将关闭。当我们在使用游标时必须在 UPDATE 后频繁使用 commit 语句时,这是一个非常常见的情况。在这种情况下,我们可以在游标声明期间使用“WITH HOLD”子句。“WITH HOLD”子句即使在发出 COMMIT 语句后也会保持游标打开。我们可以按以下方式使用“WITH HOLD”子句。EXEC SQL DECLARE ORDER_CUR CURSOR WITH HOLD FOR SELECT ORDER_ID, TRANSACTION_ID FROM ORDERS WHERE ORDER_DATE = ‘2020-07-28’ END-EXEC

在 COBOL-DB2 程序中,“WHERE CURRENT OF”子句的用途和用法是什么?

Mandalika
更新于 2020年9月15日 10:42:45

5K+ 次浏览

“WHERE CURRENT OF”子句将在执行 UPDATE 语句后对该行放置独占锁。“WHERE CURRENT OF”子句将指向游标最近提取的行。我们可以使用“WHERE CURRENT OF”按以下方式更新游标中的行。游标定义。EXEC SQL DECLARE ORDER_CUR CURSOR FOR SELECT ORDER_ID, TRANSACTION_ID FROM ORDERS WHERE ORDER_DATE = ‘2020-07-28’ END-EXEC打开游标EXEC SQL OPEN ORDER_CUR END-EXEC提取游标并更新行SET WF-END-CURSOR-N TO TRUE PERFORM UNTIL WF-END-CURSOR-Y EXEC SQL FETCH ORDER_CUR INTO :ORDER-ID, :TRANSACTION-ID END-EXEC IF TRANSACTION-ID NOT = SPACES EXEC SQL ... 阅读更多

游标中“FOR UPDATE OF”子句的用途是什么?如果我们在 COBOL-DB2 程序中不使用此子句就发出 UPDATE 语句,将会发生什么?

Mandalika
更新于 2020年9月15日 10:35:09

694 次浏览

“FOR UPDATE OF”子句在游标声明中给出,当我们想要更新表时使用。所有需要更新的列都应该在游标声明中给出。“FOR UPDATE OF”子句在游标打开后将对所有合格行放置独占锁。我们也可以不使用“FOR UPDATE CLAUSE”来更新表,但在这种情况下,只有在执行 UPDATE 查询时才会对该行放置独占锁。

如何在 COBOL-DB2 程序中检测游标行结束的条件?

Mandalika
更新于 2020年9月14日 15:28:00

1K+ 次浏览

游标可用于从 DB2 表中提取多行。但是,我们必须在循环中提取此游标,以便一次将对应于单行的值赋值给主机变量。基于此逻辑,我们必须处理循环,直到游标到达最后一行结果。当游标中没有更多行要提取时,SQLCODE 字段的值为 100。实际上,我们可以通过以下方式实现这一点。SET WF-END-CURSOR-N TO TRUE PERFORM UNTIL WF-END-CURSOR-Y EXEC SQL FETCH ORDER_CUR ... 阅读更多

在任何 COBOL-DB2 程序中使用游标涉及哪些步骤?

Mandalika
更新于 2020年9月14日 15:22:57

7K+ 次浏览

当我们必须从表中提取多行时,使用游标。在 COBOL-DB2 程序中使用游标涉及 4 个步骤。声明游标 - 在此步骤中,我们将定义游标的布局。我们将给出我们要使用的查询。例如 - EXEC SQL DECLARE ORDER_CUR CURSOR FOR SELECT ORDER_ID FROM ORDERS WHERE ORDER_DATE = ‘2020-07-28’ END-EXEC打开游标 - 接下来我们将打开游标。此语句准备游标进行数据检索。例如 - EXEC SQL OPEN ORDER_CUR END-EXEC提取游标 - 在此语句中,我们开始从 DB2 中提取数据,并且 ... 阅读更多

解释一下应该在独立 SELECT 语句上使用游标的场景?

Mandalika
更新于 2020年9月14日 15:13:40

61 次浏览

当我们在 WHERE 子句中使用主键或备用键时,通常使用独立的 SELECT 语句。因此,在这种情况下,我们确定独立的 select 语句只会返回一行,因为主键不能具有重复值(多行)。如果我们想使用非唯一键查询数据库,这可能会从 DB2 表中返回多行,我们必须使用游标来处理返回的多行。我们可以循环访问游标以逐行读取数据。例如,如果我们想... 阅读更多

如果 NULL 指示符中的最终值为 -2,我们可以得出什么结论?

Mandalika
更新于 2020年9月14日 15:07:28

876 次浏览

NULL 指示符是一个 2 字节字段,具有多种用途。当任何 DB2 列具有 NULL 值时,此指示符的值为 -1;当 DB2 列具有非 NULL 值时,其值为 0。尽管 NULL 指示符的主要目的是检查列是否具有 NULL 值,但此指示符也可以取 -2 值。此指示符中的 -2 值表示由于计算表达式出现算术错误,将 NULL 值分配给主机变量,或者... 阅读更多

广告