找到 6705 篇文章 相关数据库

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

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

2K+ 次浏览

为了实现这一点,我们将在 ORDERS 表的 INVOICE_ID 上的 SELECT 查询之后使用 NULL 指示符。如果 NULL 指示符的值为 -1,则我们可以得出结论,INVOIVE_ID 的值为 NULL。以下是此处的 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 实用程序自动生成的 NULL 指示符。

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

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零

什么是 DB2 表中的 NULL 检查和插入规则?

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

481 次浏览

DB2 中的 Null 定义为无。它是一个未知值。如果我们想限制任何列中的 NULL 值,则应在 CREATE TABLE 中使用“NOT NULL”参数定义该列。“NOT NULL”将强制用户为该列输入一个值。但是,如果我们不想为该列提供任何值,我们也可以放置一个“WITH DEFAULT”参数,它将允许 DB2 在用户未为“NOT NULL”列提供任何值的情况下放置默认值。例如,如果我们有一个列 INVOICE_ID ... 阅读更多

一个表上引用另一个表的外部键的级联规则是什么?

Mandalika
更新于 2020-09-14 13:57:08

3K+ 次浏览

外键用于在子表(其中列定义为外键)和父表(其中子表的外键成为主键)之间建立引用约束。例如,如果我们有一个 ORDER 表,其中外键定义为 TRANSACTION_ID。此外键将引用 TRANSACTIONS 表的 TRANSACTION_ID 列。在此 TRANSACTIONS 表中,TRANSACTION_ID 将是主键。此处的父表是 TRANSACTIONS 表,而子表是 ORDERS 表。外键的级联规则规定,当任何条目... 阅读更多

DB2 表中备用键的定义和用法是什么?

Mandalika
更新于 2020-09-14 13:52:07

497 次浏览

DB2 表包含许多列,其值在整个表中将保持唯一。在这些多列中,只有一列被选为主键,其余键称为候选键。我们可以将任何候选键声明为备用键。这意味着此键的值不能取重复值,但是与主键不同,不会在备用键上构建主键索引。在使用 UNIQUE 关键字定义任何表时,我们可以定义备用键。例如,如果我们想将 TRANSACTION_ID 设为备用键,则:CREATE TABLE ... 阅读更多

SQLCA 中的 SQLWARN3 有什么用?请结合实际例子说明?

Mandalika
更新于 2020-09-14 13:40:22

231 次浏览

SQLCA 中的 SQLWARN3 字段用于检测结果列数大于查询中给出的主机变量数的情况,该查询属于 COBOL-DB2 程序。SQLWARN3 是一个 1 字节字段,当查询返回的列数与使用的主机变量数不匹配时,它包含值“W”。我们可以使用 IF 或 EVALUATE 语句查询 SQLWARN3 的状态,如下例所示:A010-CHECK-ORDER. EXEC SQL SELECT ORDER_DATE, ORDER_TOTAL INTO :ORDER-DATE, FROM ORDERS ... 阅读更多

广告