SQL处理选项说明

无论您使用的是 Db2 预编译器还是 Db2 协处理器,都可以指定任何SQL处理选项。 然而, Db2 协处理器可能会忽略某些选项,因为主机语言编译器选项提供了相同的信息。

下表列出了使用 Db2 预编译器或 Db2 协处理器时可以指定的选项。 表格中还包含这些选项的缩写,并指出哪些选项在特定主机语言或 Db2 协处理器中会被忽略。 本表格使用竖线(|)分隔相互排斥的选项,使用括号([ ])表示有时可以省略括号内的选项。

表 1. SQL处理选项
选项关键词 含义
APOST1 指示 Db2 预编译器在其生成的主机语言语句中以单引号(')作为字符串分隔符。

此选项并非在所有语言中可用。

APOST和QUOTE选项不能同时使用。 默认值在安装期间位于应用程序编程默认面板1的字符串分隔符字段中。 如果字符串分隔符是撇号('),则 APOST 为默认值。

APOSTSQL 在SQL语句中,将撇号(')作为字符串分隔符,将双引号(")作为SQL转义字符。

APOSTSQL和QUOTESQL是相互排斥的选项。 在安装过程中,默认值位于“应用程序编程默认值面板1”中的“SQL字符串分隔符”字段中。 如果 SQL STRING DELIMITER 是单引号('),则 APOSTSQL 为默认值。

附加(TSO|CAF|RRSAF |ULI 指定应用程序用于访问 Db2 TSO、CAF、RRSAF或DSNULI应用程序的附件设施。加载附件设施的应用程序可以使用此选项指定正确的附件设施,而不是编码一个虚拟的DSNHLI入口点

更改开始仅在使用 Db2 协处理器时,才能指定ATTACH(ULI)。更改结束

此选项不适用于 Fortran 申请。

默认值为ATTACH(TSO)。

CCSID(n

指定源程序所使用的CCSID的数值 nn 必须是 EBCDIC CCSID。

默认设置是安装过程中面板 DSNTIPF 上指定的 EBCDIC 系统 CCSID。

Db2 协处理器使用以下过程来确定源语句的CCSID:
  1. 如果源程序的 CCSID 是由编译器选项(如 COBOL CODEPAGE 编译器选项)指定的,则 Db2 协处理器将使用该 CCSID。 如果您还指定了不同于CCSID编译器选项的SQL编译器选项的CCSID子选项,系统会返回警告,并且不使用CCSID子选项值。
  2. 如果CCSID没有通过编译器选项指定:
    1. 如果指定了SQL编译器选项的CCSID子选项,且该子选项包含有效的EBCDIC CCSID,则使用该CCSID。
    2. 如果未指定 SQL 编译器选项的 CCSID 子选项,而编译器支持指定 CCSID 的选项(如 COBOL CODEPAGE 编译器选项),则使用 CCSID 编译器选项的默认值。
    3. 如果未指定SQL编译器选项的CCSID子选项,且编译器不支持指定CCSID的选项,则使用DSNHDECP的默认CCSID或用户指定的应用程序默认模块。
    4. 如果指定了SQL选项的CCSID子选项,且该子选项包含无效的CCSID,则编译将终止。

CCSID取代了GRAPHIC和NOGRAPHIC SQL处理选项。

如果指定CCSID(1026)或CCSID(1155),则 Db2 协处理器不支持双引号(“”)的代码点'FC'X。

逗号 在以下情况下,逗号(,)在十进制或浮点数字面中作为小数点指示符:
  • 对于 COBOL 程序中的静态 SQL 语句
  • 对于动态 SQL 语句,当安装参数 DYNRULS 的值为 NO 且包含 SQL 语句的软件包或计划具有 DYNAMICRULES 绑定、定义或调用行为时。

逗号和句号不能同时使用。 在安装过程中,默认值(逗号或句号)是在应用程序编程默认面板1上的小数点下选择的。

连接(2|1)
CT(2|1)
确定应用类型1还是类型2的CONNECT语句规则。
  • CONNECT(2) 默认:对CONNECT(类型2)语句应用规则
  • CONNECT(1) 应用 CONNECT (Type 1) 语句的规则
如果您在预编译程序时没有指定CONNECT选项,则适用CONNECT(类型2)语句的规则。
日期(ISO|美国|欧洲|日本|本地) 指定日期输出应始终以特定格式返回,而不管位置默认值中指定的格式如何。

默认值在安装过程中在应用程序编程默认值面板2的日期格式字段中指定。

默认格式由绑定程序的系统的安装默认设置决定,而非由预编译程序的系统的安装默认设置决定。

除非您有日期退出程序,否则无法使用“本地”选项。

DEC(15|31)
DEC15 | DEC31
D15.s | D31.s
指定十进制算术运算的最大精度。

在安装过程中,默认值位于应用程序编程默认值面板1的十进制算术字段中。

如果指定了表格D pp.s ,则 pp 必须为15或31,表示最小分度值的s 必须为1到9之间的数字。

DECP (名称 名称表示应用程序的1到8个字符名称,默认值是仅包含数据的加载模块。

如果省略此参数,则使用默认名称DSNHDECP。

FLAG(I|W|E|S)1 抑制指定严重级别以下的诊断信息(严重性代码分别为0、4、8和12的信息、警告、错误和严重错误)。

默认设置为FLAG(I)。

FLOAT( S390|IEEE ) 确定汇编程序、C、C++ 或 PL/I 程序中浮点主机变量的内容是 IEEE 浮点格式还是 z/Architecture® 十六进制浮点格式。 Db2 如果HOST的值不是ASM、C、CPP或PLI,则忽略此选项。

默认设置是FLOAT( S390 )。

GRAPHIC

此选项不再用于SQL语句处理。 请使用CCSID选项。

表示源代码可能使用混合数据, 而X'0E'和 X'0F' 是EBCDIC数据的特殊控制字符(移出和移入)。

GRAPHIC和NOGRAPHIC是相互排斥的选项。 默认值(图形或非图形)在安装过程中在应用程序编程默认面板1的混合数据字段中指定。

HOST1(ASM |C[(FOLD)]|
CPP[(FOLD)]|
IBMCOB|
PLI|
FORTRAN|
SQL|
SQLPL)
定义包含 SQL 语句的主机语言。

请将IBMCOB用于 Enterprise COBOL for z/OS®。

对于C,请说明:

  • C 如果您不希望 Db2 将SBCS SQL普通标识符中的小写字母转换为大写
  • C(FOLD) 如果您希望 Db2 将SBCS SQL普通标识符中的小写字母转换为大写

对于C++,请指定:

  • CPP,如果您不希望 Db2 将SBCS SQL普通标识符中的小写字母转换为大写
  • CPP(FOLD) 如果您希望 Db2 将SBCS SQL普通标识符中的小写字母转换为大写

对于SQL程序语言,请指定:

  • SQL,用于执行语法检查,并将外部SQL程序的生成C程序进行转换。
  • SQLPL,用于对本地SQL程序进行语法检查。

如果省略 HOST 选项, Db2 预编译器会发出 level-4 诊断消息,并使用该选项的默认值。

在安装过程中,默认值位于“应用程序编程默认值面板1”中的“语言默认值”字段中。

此选项还设置了与语言相关的默认设置。

级别 [(aaaa )]
L
定义模块级别,其中 aaa 是最多七个字符的任意字母数字值。 不建议将此选项用于一般用途,DSNH CLIST和 DB2I 面板不支持此选项。

对于汇编程序、C、C++、 Fortran 和 PL/I ,可以省略子选项 (aaaa)。 生成的一致性标记为空。 对于 COBOL ,需要指定子选项。

LINECOUNT1(n )
LC
定义 Db2 预编译器列表中每页的行数为 n。 这包括由 Db2 预编译器插入的标题行。 默认设置为LINECOUNT(60)。
边距 1 (m,n[,c])
3月
指定每个源记录中包含主机语言或SQL语句的部分。 对于装配程序,此选项还指定列延续的开始位置。 第一个选项(m)是语句的开始列。 第二个选项(n)是陈述的结尾栏。 第三个选项(c)指定了汇编程序的继续执行位置。 否则, Db2 预编译器会在紧接结尾列的列中放置一个续行指示符。 保证金数值范围为1-80。

默认值取决于您指定的主机选项。

DSNH CLIST和 DB2I 面板不支持此选项。 在汇编程序中,如果源代码中提供了余量选项,则该选项必须符合ICTL指令。

NEWFUN(越南
已弃用的功能: NEWFUN处理选项已弃用。 更改开始请使用SQLLEVEL选项。更改结束

指示是否接受对 Db2 12 而言是新的函数语法。

NEWFUN( V12 )
指定允许任何语法,直至 Db2 12 。 该值相当于功能级别 V12R1M501。
NEWFUN( V11 )
指定允许任何语法,直至 Db2 11
NEWFUN( V10 )
指定允许任何语法,直至 DB2® 10
NEWFUN( V9 )
指定允许任何语法,直至 DB2 9DB2 9 ,但会导致预编译过程仅支持 级别的功能。 DB2 9
NEWFUN( V8 )
指定允许任何语法,直至 DB2 version 8 。 V8 ,但会导致预编译过程仅支持 级别的功能。 V8

更改开始NEWFUN选项仅适用于预编译器或 Db2 协处理器进行的预编译过程,与子系统是否激活新功能无关。更改结束 您有责任确保以正确的迁移模式将生成的 DBRM 绑定到子系统上。

NOFOR 在静态SQL中,无需在DECLARE CURSOR语句中使用FOR UPDATE或FOR UPDATE OF子句。 当您使用NOFOR时,您的程序可以对任何列进行定位更新,前提是该程序具有 Db2 权限。

当您不使用 NOFOR 时,如果您要对程序具有 Db2 权限的任何列进行定位更新,则需要在 DECLARE CURSOR 语句中指定 FOR UPDATE,且不包含列列表。 不带列列表的FOR UPDATE子句适用于静态或动态SQL语句。

无论是否使用NOFOR,您都可以指定FOR UPDATE OF,并附上列列表,将更新限制为仅更新子句中命名的列,还可以指定获取更新锁。

当您使用选项STDSQL(YES)时,意味着NOFOR。

如果生成的DBRM非常大,当您指定NOFOR或使用FOR UPDATE子句而没有列列表时,可能需要额外的存储空间。

NOGRAPHIC

此选项不再用于SQL语句处理。 请使用CCSID选项。

表示在字符串中使用 X'0E'和 X'0F' 字符串中,但不是作为控制字符。

GRAPHIC和NOGRAPHIC是相互排斥的选项。 默认值(图形或非图形)在安装过程中在应用程序编程默认面板1的混合数据字段中指定。

NOGRAPHIC选项仅适用于EBCDIC数据。

无选择
无选择
禁止显示 Db2 预编译选项列表。
NOPADNTSTR 指示以 NUL 结尾的字符串的输出主变量使用空格填充。 也就是说,在字符串末尾放置NUL终止符之前,不会插入额外的空格。

PADNTSTR和NOPADNTSTR是互斥选项。 默认值(PADNTSTR或NOPADNTSTR)在安装过程中在应用程序编程默认值面板2的PAD NUL-TERMINATED字段中指定。

此选项仅适用于C和C++应用程序。

NOSOURCE2
NOS
禁止显示 Db2 预编译源代码列表。 这是缺省值。
NOXREF 禁止显示 Db2 预编译器交叉引用列表。 这是缺省值。
ONEPASS
ON
一次完成所有工序,避免二次加工带来的额外时间。 声明必须出现在SQL引用之前。

默认值取决于指定的主机选项。

ONEPASS和TWOPASS是相互排斥的选项。

选项1
选项
列出 Db2 预编译选项。 这是缺省值。
PADNTSTR 表示以空字符结尾的输出宿主变量用空格填充,空字符结尾符位于字符串末尾。

PADNTSTR和NOPADNTSTR是互斥选项。 默认值(PADNTSTR或NOPADNTSTR)在安装过程中在应用程序编程默认值面板2的PAD NUL-TERMINATED字段中指定。

此选项仅适用于C和C++应用程序。

PERIOD 在以下情况下,将句点(.)识别为十进制或浮点数字面值中的小数点指示符:
  • 对于 COBOL 程序中的静态 SQL 语句
  • 对于动态 SQL 语句,当安装参数 DYNRULS 的值为 NO 且包含 SQL 语句的软件包或计划具有 DYNAMICRULES 绑定、定义或调用行为时。

逗号和句号不能同时使用。 默认值(逗号或句号)在安装过程中在应用程序编程默认值面板1的“小数点”字段中指定。

报价1
Q
指示 Db2 预编译器在其生成的主机语言语句中以引号(")作为字符串分隔符。

报价仅适用于 COBOL 申请。 以下预编译选项组合均不适用:

  • CCSID(1026)和HOST(IBMCOB)
  • CCSID(1155)和HOST(IBMCOB)

默认值在安装过程中在应用程序编程默认值面板1的字符串分隔符字段中指定。 如果字符串分隔符为双引号(")或默认值,则默认值为引号。

APOST和QUOTE选项不能同时使用。

QUOTESQL 在SQL语句中,将双引号(")作为字符串分隔符,将单引号(')作为SQL转义字符。 该选项仅适用于 COBOL。

默认值在安装过程中在应用程序编程默认值面板1的SQL字符串分隔符字段中指定。 如果 SQL STRING DELIMITER 是双引号(")或 DEFAULT,则 QUOTESQL 为默认值。

APOSTSQL和QUOTESQL是相互排斥的选项。

来源1
S
列出 Db2 预编译源代码和诊断信息。
SQL(ALL| DB2 指示源代码中是否包含 Db2 for z/OS 无法识别的SQL语句。

对于SQL语句必须在 Db2 for z/OS 以外的服务器上执行的应用程序,建议使用SQL(ALL),使用DRDA访问。 SQL(ALL)表示程序中的SQL语句不一定是 Db2 for z/OS 的。 因此,SQL语句处理器会接受不符合 Db2 语法规则的语句。 SQL语句处理器根据分布式关系数据库架构(DRDA)规则解释和处理SQL语句。 如果程序试图将 IBM® SQL保留字用作普通标识符,SQL语句处理器也会发出一条信息。 SQL(ALL)不影响SQL语句处理器的限制。

SQL(Db2 )是默认设置,用于解释SQL语句并检查语法,供 Db2 for z/OS 使用。 当数据库服务器为 Db2 for z/OS 时,建议使用SQL(Db2)。

更改开始SQLLEVEL(V10R1|V11R1 |function-level )更改结束 更改开始指示是否接受在 Db2 12 函数级别中新增的SQL语法。
SQLLEVEL (函数级别
指定预编译过程允许的功能级别。 格式为 VvvRrMmmm,其中 vv 是版本, r 是发布版本, mmm 是修改级别。 SQLLEVEL V12R1M100 等于 V11R1。
SQLLEVEL( V11R1 )
指定允许任何不超过 Db2 11 的 SQL 语法。
SQLLEVEL( V10R1 )
指定允许任何不超过 DB2 10 的 SQL 语法。
SQLLEVEL( V9R1 )
指定允许任何不超过 DB2 9 的 SQL 语法。 DB2 9 ,但会导致预编译过程仅支持 级别的SQL语法。 DB2 9
SQLLEVEL( V8R1 )
指定允许任何不超过 DB2 version 8 的 SQL 语法。 DB2 version 8 ,但会导致预编译过程仅支持 级别的SQL语法。 DB2 version 8

更改开始Db2 子系统上激活的功能级别不会限制SQLLEVEL值。 但是,您必须确保在激活了正确功能级别的 Db2 子系统上将生成的DBRM绑定到正确的应用程序兼容级别。更改结束

更改结束
STDSQL(NO|YES)3 指示输出语句应符合哪些规则。

STDSQL(YES)3 表示源程序中的预编译SQL语句符合SQL标准的某些规则。 STDSQL(NO)表示符合 Db2 规则。

默认值在安装过程中在应用程序编程默认值面板2的STD SQL LANGUAGE字段中指定。

STDSQL(YES)自动包含NOFOR选项。

时间(ISO|美国|欧洲|日本|本地) 指定时间输出始终以特定格式返回,而不管位置默认值指定的格式如何。

默认值在安装过程中在应用程序编程默认值面板2的时间格式字段中指定。

默认格式由绑定程序的系统的安装默认设置决定,而非由预编译程序的系统的安装默认设置决定。

除非您设置了定时退出程序,否则无法使用“本地”选项。

TWOPASS
TW
声明和引用分两步进行,因此声明不必在引用之前进行。 默认值取决于指定的主机选项。

ONEPASS和TWOPASS是相互排斥的选项。

对于 Db2 协处理器,可以只为 PL/I 应用程序指定 TWOPASS 选项。 对于 C/C++ 和 COBOL 应用程序, Db2 协处理器使用 ONEPASS 选项。

版本 (aaaa| 自动)

定义软件包、程序和生成的DBRM的版本标识符。 版本标识符是最多包含 64 个 EBCDIC 字节的 SQL 标识符。

当您指定版本时,SQL语句处理器会在程序和DBRM中创建一个版本标识符。 这会影响负载模块和DBRM的大小。 Db2 当您将DBRM绑定到软件包时,使用版本标识符。

如果在预编译时未指定版本,则空字符串为默认版本标识符。 如果指定AUTO,SQL语句处理器将使用一致性标记生成版本标识符。 如果一致性标记是时间戳,则时间戳将被转换为ISO字符格式,并用作版本标识符。 使用的日期时间戳基于商店时钟值。

XREF5 包括列表输出中SQL语句中使用的符号的交叉引用列表。
注:
  1. 当编译器调用 Db2 协处理器准备应用程序时, Db2 协处理器会忽略此选项。
  2. 当编译器调用 Db2 协处理器准备应用程序时,该选项始终有效。
  3. 您可以像在 Db2 的早期版本中一样使用STDSQL(86)。 SQL语句处理器将其视为STDSQL(YES)。
  4. 预编译器选项不会影响 ODBC 的行为。
  5. 当编译器调用 Db2 协处理器准备应用程序时, Db2 协处理器会忽略此选项。 不过,如果您使用的是 PL/I V4.1 或更高版本,则支持该功能。