找到关于数据库的6705 篇文章

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 值分配给主机变量,或者... 阅读更多

在 DB2 表列中使用“NOT NULL WITH DEFAULT”子句的目的是什么?

Mandalika
更新于 2020年9月14日 15:02:16

1K+ 次查看

当我们定义 DB2 表时,我们可以将任何列声明为“NOT NULL”,这意味着在任何情况下此列都不能存储 NULL 值。现在,如果我们尝试在我们的 COBOL-DB2 程序中使用 NULL 指示符中的 -1 值在此列中存储 NULL 值,那么我们的查询将失败。在这种情况下,SQLCA 的 SQLCODE 字段将给出错误代码 -407。根据 IBM 文档,-407 错误代码表示−“更新、插入或设置值为 NULL,但对象列不能包含 NULL 值”。

如何使用 COBOL-DB2 程序在 DB2 表的特定列中存储 NULL 值?

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

5K+ 次查看

我们将使用 NULL 指示符以便在 DB2 表的任何列中存储 NULL 值。首先,我们应该在我们的 COBOL-DB2 程序中将值 -1 移动到 NULL 指示符中。之后,我们执行 UPDATE 或 INSERT 查询以存储 NULL 值。例如,如果我们必须更新 ORDER 表中 ORDER_ID 为 3345612.A020-UPDATE-ORDERS 的 ORDER_DESCRIPTION 列中的 NULL 值。    MOVE -1 TO ORDER-DESCRIPTION-N    MOVE SPACES TO ORDER-DESCRIPTION-DATA    EXEC SQL       UPDATE ORDERS          SET ORDER_DESCRIPTION =           ... 阅读更多

如果 DB2 表中存在 NULL 值,则 COUNT 函数的结果是什么?

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

373 次查看

DB2 中的 COUNT 函数用于返回满足给定条件的行数。GROUP BY 用于根据查询中给定的条件将行划分为组。如果我们对 INVOICE_ID 执行 GROUP BY,并且有一些行在 INVOICE_ID 中具有 NULL 值,则 null 值将形成一个单独的组。例如,如果我们有以下表。ORDER_IDINVOICE_IDA112343214A556113214A99867NULLA556713214A88907NULLA560126701在执行对 INVOICE_ID 执行 GROUP BY 并计算行数的查询时,我们将获得以下结果。SELECT INVOICE_ID, COUNT(*) AS INVOICE COUNT FROM ORDERS GROUP BY ... 阅读更多

如果在 COBOL-DB2 程序中的 SQL 语句中检测到 NULL 值且未使用 NULL 指示符,会发生什么情况?

Mandalika
更新于 2020年9月14日 14:54:26

2K+ 次查看

COBOL 语言中没有 NULL 的概念。因此,如果 DB2 表中的任何列可以保存 NULL 值,那么我们需要在 SELECT 查询中提供 NULL 指示符以检测 NULL 值。但是,如果我们在 SELECT 查询中忘记提供 NULL 指示符,并且任何列包含 NULL 值,则查询将失败,并且我们在 SQLCA 的 SQLCODE 字段中将获得 -305 的值。根据 IBM 文档,-305 值表示:“由于……无法将 NULL 值分配给输出主机变量编号 position-number”。 阅读更多

广告