找到 6705 篇文章 相关数据库

带有语法的 SENSITIVE 和 INSENSITIVE 可滚动游标有什么区别?

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

1K+ 次查看

INSENSITIVE SCROLLABLE 游标是一种只读游标,一旦游标打开,结果表就无法更改。其他应用程序也无法在 INSENSITIVE SCROLLABLE 游标打开后更新它。SENSITIVE SCROLLABLE 游标与 INSENSITIVE 不同,它对结果表中所做的更改敏感。其他应用程序所做的更改将反映在结果表中。我们可以像下面这样声明 SENSITIVE 和 INSENSITIVE SCROLLABLE 游标。EXEC SQL       DECLARE ORDER_CURR SENSITIVE SCROLL CURSOR FOR          SELECT ORDER_ID, ORDER_DATE FROM ORDERS             WHERE ORDER_DATE ... 阅读更多

编写在 ORDERS DB2 表上声明可滚动游标的语法。

Mandalika
更新于 2020-09-15 11:08:13

513 次查看

可滚动游标可以向前和向后移动。换句话说,它可以获取下一行以及前一行。使用 DECLARE CURSOR 中的“SCROLL”子句声明可滚动游标。例如,如果我们想在 ORDERS 表上声明一个可滚动游标,那么我们必须像下面这样声明游标。EXEC SQL       DECLARE ORDER_CURR SCROLL CURSOR FOR          SELECT ORDER_ID, ORDER_DATE FROM ORDERS             WHERE ORDER_DATE = ‘2020-07-29’ END-SQL

SCROLLABLE 游标在 COBOLDB2 程序中的用途和用法是什么?

Mandalika
更新于 2020-09-15 11:06:45

444 次查看

游标只能向前移动,这意味着它可以在每次获取后提取下一行。无法使用游标提取前一行。例如,如果我们的结果游标包含以下行:ORDER_IDORDER_DATEA223672020-07-28A667562020-07-28A778902020-07-29A968322020-07-29如果我们的游标当前指向第 3 行,即订单 ID A77890,则下一个获取将使游标指向下一行,即订单 ID A96832。无法将游标指向上一个订单 ID,即 A66756。为了实现这一点,我们使用 SCROLLABLE 游标的概念。SCROLLABLE 游标可以同时... 阅读更多

多行插入中 ATOMIC 和 NON-ATOMIC 子句的用途和用法是什么?

Mandalika
更新于 2020-09-15 11:03:38

743 次查看

ATOMIC 和 NON ATOMIC 子句用于多行插入。如果未给出任何选项,则始终默认处理 ATOMIC。ATOMIC 子句规定,如果在多行插入期间插入任何一行时发生故障,则整个查询将失败,并且所有插入都将回滚。NON ATOMIC 子句与 ATOMIC 子句正好相反。当我们必须在多行插入中单独插入和处理所有行时,使用它。例如,此选项可以像下面这样使用。MOVE 50 TO MAX-ROWS ... 阅读更多

如何在程序中使用单个 INSERT 命令在表中插入多行?

Mandalika
更新于 2020-09-15 10:58:18

622 次查看

如果我们想使用单个 INSERT 命令在 DB2 表中插入多行,那么我们必须定义主机变量数组并将要插入的行数据移动到该数组中。我们需要在工作存储部分定义另一个变量,其配置为 S9(4) COMP,它将保存要插入的行数。我们可以如下插入多行:MOVE 50 TO MAX-ROWS    EXEC SQL    INSERT INTO ORDERS (ORDER_ID, ORDER_DATE)    VALUES(:ORDER-ID, :ORDER-DATE) FOR    :MAX-ROWS ROWS END-EXECORDER-ID 和 ORDER-DATE 是主机变量,应... 阅读更多

在多行获取的情况下,主机变量的用法是什么?

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

199 次查看

对于多行获取,主机变量需要声明为数组。此外,我们需要在工作存储部分定义另一个变量,其配置为 S9(4) COMP,它将存储单个获取调用中要获取的行数的值。我们可以为此变量指定任何名称,这里我们使用了 MAX-ROW。以下是声明主机变量数组和 MAX-ROW 的示例。01 ORDER-ID PIC X(25) OCCURS 25 TIMES。 01 MAX-ROW PIC S9(4) COMP VALUE 25。我们将如下获取游标。EXEC SQL    FETCH NEXT ROWSET FROM ORDER_CUR FOR ... 阅读更多

如何使用单个 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

广告