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

如何在一个 FETCH 调用中从 DB2 表中提取多行?

Mandalika
更新于 2020-09-15 10:51:31

903 次浏览

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

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

Mandalika
更新于 2020-09-15 10:49:03

130 次浏览

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

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

Mandalika
更新于 2020-09-15 10:47:15

62 次浏览

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

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

Mandalika
更新于 2020-09-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

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

Mandalika
更新于 2020-09-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-09-15 10:35:09

694 次浏览

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

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

Mandalika
更新于 2020-09-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-09-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-09-14 15:13:40

61 次浏览

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

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

Mandalika
更新于 2020-09-14 15:07:28

876 次浏览

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

广告