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

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

Mandalika
更新于 2020-09-14 15:02:16

1K+ 阅读量

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

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

Mandalika
更新于 2020-09-14 15:00:58

5K+ 阅读量

我们将使用 NULL 指示符来将 NULL 值存储在 DB2 表的任何列中。首先,我们应该在我们的 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-09-14 14:57:50

373 阅读量

DB2 中的 COUNT 函数用于返回满足给定条件的行数。GROUP BY 用于根据查询中给定的条件将行划分为组。如果我们对 INVOICE_ID 执行 GROUP BY,并且有一些行在 INVOICE_ID 中具有 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-09-14 14:54:26

2K+ 阅读量

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

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

Mandalika
更新于 2020-09-14 14:52:20

2K+ 阅读量

为了实现这一点,我们将在 ORDERS 表的 INVOICE_ID 上的 SELECT 查询之后使用 NULL 指示符。如果 NULL 指示符的值为 -1,则我们可以得出结论,INVOIVE_ID 具有空值。以下是对此的 COBOL 段落:A010-CHECK-ORDER.    EXEC SQL    SELECT INVOICE_ID INTO :INVOICE_ID_DATA :INVOICE_ID_N    FROM ORDERS       WHERE ORDER_ID = ‘678542112’    END-EXEC    IF INVOICE-ID-N = -1    MOVE SPACES TO INVOICE-ID-DATA END-IFINVOICE-ID-N 是此处由 DCLGEN 实用程序自动生成的空指示符。

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

Mandalika
更新于 2020-09-14 14:44:03

575 阅读量

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

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

Mandalika
更新于 2020-09-14 14:39:55

1K+ 阅读量

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

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

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

DB2 对各种数据类型使用哪些默认值?

Mandalika
更新于 2020-09-14 14:21:06

969 阅读量

如果用户未为列提供任何值,则 DB2 提供了一种在其中插入默认值的工具。对于每种 DB2 数据类型,都存在一个固定的默认值,如果在插入期间未提供该值,则该值将分配给该列(在创建表期间使用“DEFAULT”参数定义)。下表提供了 CHAR、VARCHAR、TIMESTAMP 和 INTEGER 的 DB2 默认值。数据类型DB2 默认值CHAR空格Varchar长度为 0 的空字符串TIMESTAMP当前时间戳INTEGER零

广告