发行说明


49.2 CLI/ODBC/JDBC 配置 PATCH1 和 PATCH2 设置

CLI/ODBC/JDBC 驱动程序可通过“客户机配置辅助程序”或“ODBC 驱动程序管理器”来进行配置(如果它安装在系统上的话),或者通过手工编辑 db2cli.ini 文件来进行配置。有关更多信息,参见《安装和配置补遗》CLI Guide and Reference

可通过 db2cli.ini 文件,或通过 SQLDriverConnect() 或 SQLBrowseConnect() CLI API,为 PATCH1 和 PATCH2 关键字指定值,来修改 DB2 CLI/ODBC 驱动程序的缺省行为。

将用户要设置的所有关键字加在一起来指定 PATCH1 关键字。例如,如果指定了补丁程序 1、2 和 8,则 PATCH1 将具有值 11。以下是每个关键字值以及它对驱动程序的影响的描述:

1
这会使驱动程序搜索“count(exp)”,并将其替换为“count(distinct exp)”。 这是必需的,因为 DB2 的某些版本支持“count(exp)”语法,而该语法是由某些 ODBC 应用程序生成的。这是服务器不支持“count(exp)”语法时 Microsoft 应用程序所需的。

2
SQLGetTypeInfo() 函数中对 LITERAL_PREFIX 或 LITERAL_SUFFIX 列返回 SQL_NULL_DATA 时,某些 ODBC 应用程序被捕获。这会强制驱动程序反而返回空的字符串。这是 Impromptu 2.0 所需的。

4
如果时间戳记的时间和分数部分被设置为零的话,这会强制驱动程序将输入时间戳记数据视作日期数据,这是 Microsoft Access 所需的。

8
这会强制驱动程序将输入时间戳记数据视作时间数据(如果时间戳记的日期部分为 1899-12-30 的话)。这是 Microsoft Access 所需要的。

16
未使用。

32
这会强制驱动程序不返回有关 SQL_LONGVARCHAR、SQL_LONGVARBINARY 和 SQL_LONGVARGRAPHIC 列的信息。对于应用程序,它表现得好象不支持长字段一样。这是 Lotus 123 所需的。

64
这会强制驱动程序使终止图形输出字符串为 NULL。这是双字节环境中的 Microsoft Access 所需要的。

128
这会强制驱动程序让查询“SELECT Config, nValue FROM MSysConf”转至服务器。 驱动程序当前返回一个错误,相关联的 SQLSTATE 值为 S0002(找不到表)。 如果用户已经在数据库中创建了此配置表,且想要应用程序存取它,则这是必需的。

256
这会强制驱动程序在 SQLStatistics() 调用中首先返回主键列,驱动程序当前返回了根据索引名排序的索引,这就是标准的 ODBC 行为。

512
这会强制驱动程序在 SQLGetFunctions() 中对 SQL_API_SQLTABLEPRIVILEGES 和 SQL_API_SQLCOLUMNPRIVILEGES 返回 FALSE。

1024
这会强制驱动程序在 SQLExecute() 或 SQLExecDirect() 中返回 SQL_SUCCESS 而不是 SQL_NO_DATA_FOUND,如果执行的 UPDATE 或 DELETE 语句未影响任何行的话。这是 Visual Basic 应用程序所需的。

2048
未使用。

4096
这会强制驱动程序在处于自动落实方式时关闭游标之后不发出 COMMIT。

8192
这会强制驱动程序在调用存储过程后返回额外的结果集。此结果集是组成该存储过程的输出值的一行结果集。可通过 Powerbuild 应用程序进行存取。

32768
这会强制驱动程序使 Microsoft Query 应用程序使用 DB2 MVS 同义词。

65536
这会强制驱动程序在实际上是图形文字的字符文字前手工插入“G”。在双字节环境中工作时,总是会提供此补丁程序。

131072
这会强制驱动程序在时间戳记列作为唯一索引的一部分时,将该列反而描述为 CHAR(26) 列。这是 Microsoft 应用程序所需的。

262144
这会强制驱动程序使用伪目录表 db2cli.procedures 而不使用 SYSCAT.PROCEDURES 和 SYSCAT.PROCPARMS 表。

524288
这会强制驱动程序在对 DB2/400 V3.x 系统执行系统表查询时使用 SYSTEM_TABLE_SCHEMA 而不是 TABLE_SCHEMA。这会提高性能。

1048576
这会强制驱动程序将 SQLPutData() 中的零长度字符串看作 SQL_NULL_DATA。

PATCH2 关键字与 PATCH1 关键字不同。对于 PATCH2,是使用逗号分隔符来指定多个补丁程序。例如,如果指定了补丁程序 1、4 和 5,则 PATCH2 将具有值“1,4,5”。以下是每个关键字值以及它对驱动程序的影响的描述:

 1 — 这会强制驱动程序将 CALL 语句中的存储过程名转换为大写。
 
 2 — 未使用。
 
 3 — 它强制驱动程序把模式调用的所有自变量都转换为大写。
 
 4 — 这会强制驱动程序对模式调用(即 SQLColumns()、SQLProcedureColumns()
      等等)返回类似版本 2.1.2 的结果集,而不是类似版本 5 的结果集。
 
 5 — 这会强制驱动程序不对输入 VARCHAR 列的处理进行优化,
      其中指向数据的指针和指向长度的指针在内存中是连续的。
 
 6 — 这会强制驱动程序返回消息“可滚动游标不受支持”。如果 DB2 客户机为
      版本 5 且服务器为“DB2 UDB 版本 5”的话,这是 Visual Basic 程序所需的。
 
 7 — 这会强制驱动程序将所有 GRAPHIC 列数据类型映射至 CHAR 列数据类型。
      这是双字节环境所需要的。
 
 8 — 它强制驱动程序忽略模式调用中的目录搜索自变量。
 
 9 — 不要落实游标的“提前关闭”
 
 10 — 未使用
 
 11 — 报告支持目录名,(VB 存储过程)
 
 12 — 从模式调用自变量中除去双引号,(Visual Interdev)
 
 13 — 不要将 db2cli.ini 中的关键字追加到输出连接字符串
 
 14 — 忽略 SQLProcedures() 和 SQLProcedureColumns() 中的模式名
 
 15 — 在字符输出中始终使用句点作为小数分隔符
 
 16 — 对于每次打开,强制返回描述信息
 
 17 — 不要在描述信息中返回列名
 
 18 — 试图用参数标记替换文字
 
 19 — 目前 DB2 MVS V4.1 不支持 ODBC 语法,该语法允许 ON 子句和 Outer 连接
       子句中出现括号。打开此 PATCH2 将导致 IBM DB2 ODBC 驱动程序在 outer
       连接子句处于 OCBC 转义序列中时去掉括号。仅当对 DB2 MVS 4.1 运行时,
       才应使用此 PATCH2。
 
 20 — 目前,MVS 上的 DB2 不支持将两个操作数作为参数标记的 BETWEEN 谓词
       (表达式为 ? BETWEEN ?)。打开此补丁程序将导致“IBM ODBC 驱动程序”
       将该谓词重写为(表达式 >= ? 和表达式 <= ?)。
 
 21 — 只将存储过程的所有 OUTPUT 参数设置为 SQL_NULL_DATA
 
 22 — 此 PATCH2 会导致 IBM ODBC 驱动程序将 OUTER 连接报告为不受支持。这是针对
       在使用 outer 连接语句时生成 SELECT DISTINCT col1 或 ORDER BY col1(其中
       col1 的长度大于 254 个字符)的应用程序而言的,并会导致 DB2 UDB 返回错误
      (因为 DB2 UDB 不支持使用长度超过 254 个字节的列)
 
 23 — 不要优化与 cbColDef=0 绑定的参数输入
 
 24 — 将“时间”值映射为“字符”的存取解决方法
 
 25 — 小数列的存取解决方法 — 除去 char 表示法中的结尾零
 
 26 — 不要将 sqlcode 464 返回至应用程序 — 指示返回了结果集
 
 27 — 强制 SQLTables 使用 TABLETYPE 关键字值,即使应用程序指定了有效值
 
 28 — 将实型列描述为双精度型列
 
 29 — 小数列的 ADO 解决方法 — 除去值 x 的前导零
       其中 1 > x > -1(仅某些 MDAC 版本需要)
 
 30 — 禁用“存储过程”高速缓存优化
 
 31 — 报告关于 SQLStatistics 调用上的别名的统计信息
 
 32 — 覆盖 sqlcode -727 原因码 4 处理
 
 33 — 在转换为 char 时返回 ISO 版本的时间戳记(与 ODBC 版本相对照)
 
 34 — 将 CHAR FOR BIT DATA 列报告为 CHAR
 
 35 — 在请求 SQL_DESC_BASE_TABLE_NAME 时报告无效的
       TABLENAME - ADO 只读优化
 
 36 — 保留
 
 37 — 保留


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]