找到关于 DB2 的150 篇文章

如果 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 的 ORDER_DESCRIPTION 列中的 NULL 值。A020-UPDATE-ORDERS。 移动 -1 到 ORDER-DESCRIPTION-N 移动空格到 ORDER-DESCRIPTION-DATA 执行 SQL 更新订单 设置 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,因为……阅读更多

如何使用 COBOL 段验证 DB2 列数据中的 NULL 值?

Mandalika
更新于 2020年9月14日 14:52:20

2K+ 次浏览

为了实现这一点,我们将在 ORDERS 表的 INVOICE_ID 上的 SELECT 查询之后使用 NULL 指示符。如果 NULL 指示符的值为 -1,则我们可以得出结论,INVOIVE_ID 具有 null 值。以下是对此的 COBOL 段:A010-CHECK-ORDER。 执行 SQL 选择 INVOICE_ID 到:INVOICE_ID_DATA:INVOICE_ID_N 来自 ORDERS 其中 ORDER_ID = '678542112' 结束执行 如果 INVOICE-ID-N = -1 移动空格到 INVOICE-ID-DATA 结束如果INVOICE-ID-N 是此处由 DCLGEN 实用程序自动生成的 NULL 指示符。

当主机变量与 SELECT 语句中的列数不匹配时,COBOL-DB2 程序的行为将如何?

Mandalika
更新于 2020年9月14日 14:44:03

575 次浏览

如果列数和主机变量数不匹配,则查询将失败。我们可以通过两种方法检测此条件。如果存在不匹配,则 SQLCA 的 SQLWARN3 字段将获得 'W' 值。在某些安装中,当存在不匹配时,SQLCA 的 SQLCODE 字段将获得错误代码 -804。我们可以使用 IF 条件来检查 SQLWARN3 或 SQLCODE 中的值,并相应地引导程序处理。

DCLGEN 实用程序如何为 VARCHAR(n) 数据类型适应 NULL 主机变量?

Mandalika
更新于 2020年9月14日 14:39:55

1K+ 次浏览

如果未显式定义为“NOT NULL”选项,则 DB2 列可以存储 NULL 值。但是,COBOL 没有任何 NULL 概念。为了处理这些 NULL 值,COBOL 程序对具有 NULL 值的字符列使用空格,对整数列使用零。但是,主要挑战是如何检测特定列具有 NULL 值以及如何将空格/零移动到相应的主机变量中。为了克服这个问题,DCLGEN 实用程序为每个可以保存 null 值的 DB2 列生成一个 NULL 指示符。NULL 指示符是 2 字节……阅读更多

将 DECIMAL(7,3) 转换为等效的 COBOL 主机变量 PIC 形式。

Mandalika
更新于 2020年9月14日 14:30:09

1K+ 次浏览

将 DECIMAL DB2 数据类型转换为 COBOL 等效类型的公式为:DECIMAL(p,q) = PIC S9(p-q)V(q)。其中 V 表示隐式小数。DECIMAL(7,3) 可以取样本值 7861.237,这可以转换为 COBOL 等效类型为 PIC S9(7-3)V(3) = PIC S9(4)V(3)。

各种 DB2 数据类型的 COBOL 主机变量等效类型是什么?

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

724 次浏览

主机变量用于将数据从 DB2 传输到程序,反之亦然。对于每个 DB2 表列,我们都有一个定义的 COBOL 等效主机变量。可以使用 DCLGEN 实用程序自动生成主机变量,或者我们可以在 COBOL-DB2 程序的工作存储区部分显式给出主机变量。下表中提到了各种 DB2 数据类型的 COBOL 等效类型。DB2 数据类型COBOL 等效类型SMALLINT - 2 字节PIC S9(4) COMPINTEGER - 4 字节PIC S9(9) COMPTIMESTAMP - 10 字节PIC X(26)CHAR - 5 字节PIC X(5)

广告