版本注意事項


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
如果時間戳記的時間與小數部份是 0, 則這會強制驅動程式將輸入時間戳記資料視為日期資料。 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"。目前, 驅動程式會傳回與 S0002 的 SQLSTATE 值相關的錯誤 (找不到表格)。如果使用者已在資料庫中建立此架構表, 且想要讓應用程式存取它,則需要此項。

256
這會強制驅動程式在 SQLStatistics() 呼叫中先傳回主要鍵直欄。目前,驅動程式會依照索引名稱傳回已排序的索引,那是標準的 ODBC 行為。

512
這會強制驅動程式在 SQLGetFunctions() 中傳回 SQL_API_SQLTABLEPRIVILEGES 與 SQL_API_SQLCOLUMNPRIVILEGES 的 FALSE。

1024
如果已執行的 UPDATE 或 DELETE 陳述式未影響任何橫列, 則這會強制驅動程式在 SQLExecute() 或 SQLExecDirect() 中傳回 SQL_SUCCESS 而非 SQL_NO_DATA_FOUND。 Visual Basic 應用程式需要此項。

2048
不使用。

4096
這會強制驅動程式在自動確定模式中關閉游標後,不發出 COMMIT。

8192
這會強制驅動程式在呼叫儲存程序後,傳回額外的結果集。 此結果集是一個橫列的結果集,是由儲存程序的輸出值組成。 Powerbuild 應用程式可以存取此值。

32768
這會強制驅動程式讓 Microsoft Query 應用程式能使用 DB2 MVS 同義字。

65536
這會強制驅動程式在字元文字前自行插入一個 "G",該字元文字實際上是圖形文字。 在雙位元組環境中運作時,恆應提供此修補程式。

131072
當時間戳記直欄是唯一索引的一部份時,這會強制驅動程式將它視為 CHAR(26) 直欄。Microsoft 應用程式需要此項。

262144
這會強制驅動程式使用 pseudo 型錄表格 db2cli.procedures, 而非 SYSCAT.PROCEDURES 與 SYSCAT.PROCPARMS 表格。

524288
這會強制驅動程式對 DB2/400 V3.x 系統執行系統表格查詢時, 使用 SYSTEM_TABLE_SCHEMA 而非 TABLE_SCHEMA。 這會造成較好的效能。

1048576
這會強制驅動程式透過 SQLPutData(),將零長度字串視為 SQL_NULL_DATA。

PATCH2 關鍵字不同於 PATCH1 關鍵字。在這種情況中,將使用逗點分隔字元來指定多個修補程式。 例如,如果指定了修補程式 1、4 及 5,則 PATCH2 將具有值 "1,4,5"。 下列是驅動程式上每一關鍵字值及其效果的說明:

 1 - 這會強制驅動程式將 CALL 陳述式中的儲存程序名稱轉換為大寫字體。
 2 - 不使用。
 
 3 - 這會強制驅動程式將綱目呼叫的所有引數轉換為大寫字體。
 4 - 這會強制驅動程式對於綱目呼叫 (也就是 SQLColumns()、SQLProcedureColumns()
     等等) 傳回類似版本 2.1.2 的結果集,而非類似版本 5 的結果集。
 5 - 這會強制驅動程式不要最佳化輸入 VARCHAR 直欄的處理,指向資料的指標和指向
     長度的指標在記憶體中是連續的。
 6 - 這會強制驅動程式傳回不支援可捲動游標的訊息。Visual Basic 程式會需要用到,
     如果 DB2 從屬站是版本 5,且伺服器是 DB2 UDB 版本 5。
 7 - 這會強制驅動程式將所有 GRAPHIC 直欄資料類型對映到 CHAR
     直欄資料類型。在雙位元組環境中需要這種效果。
 8 - 這會強制驅動程式忽略綱目呼叫中的目錄搜尋引數。
 9 - 游標提早關閉時不要 COMMIT
 10 - 不使用
 11 - 報告支援目錄名稱, (VB 儲存程序)
 12 - 從綱目呼叫引數除去雙引號, (Visual Interdev)
 13 - 請勿將 db2cli.ini 的關鍵字添加到輸出連接字串
 14 - 忽略 SQLProcedures() 及 SQLProcedureColumns() 上的綱目名稱
 15 - 使用句點代表字元輸出中的小數點符號
 16 - 強迫傳回每一開啟的說明資訊
 17 - 請勿在說明上傳回直欄名稱
 18 - 嘗試以參數記號取代文字
 19 - 目前,DB2 MVS V4.1 不支援 ODBC 語法,因為它容許在外部結合子句中的
      ON 子句可有括弧。
      開啟這個 PATCH2 會導致 IBM DB2 ODBC 驅動程式在外部結合子句在 ODBC ESC
      序列中時將連字號除去。這個 PATCH2 只有在不利於 DB2 MVS 4.1 時才使用。
 20 - 目前,MVS 上的 DB2 不支援參數記號為兩個運算元 (expression ? BETWEEN ?) 的
      BETWEEN 述詞。開啟這個修補程式會導致 IBM ODBC 驅動程式將述詞覆寫為
      (expression >= ? and expression <= ?)。
 21 - 將儲存程序的所有僅 OUTPUT 參數設定為 SQL_NULL_DATA
 22 - 此 PATCH2 會導致 IBM ODBC 驅動程式報告不支援外部結合 (OUTER join)。
      這是因為在使用 coll 長度超過 254 個字元的外部結合陳述式時,
      應用程式會產生 SELECT DISTINCT col1 或 ORDER BY col1,
      並造成 DB2 UDB 傳回錯誤
      (因為 DB2 UDB 在此使用情況中不支援大於 254 位元組的
      直欄
 23 - 請勿最佳化透過 cbColDef=0 結合的參數之輸入 
 24 - 存取對映時間的實例為字元
 25 - 存取小數直欄的實例 - 除去字元陳述尾端的零
 26 - 不將 SQL 程式 464 傳回給應用程式 - 表示已傳回結果集
 27 - 迫使 SQLTables 使用 TABLETYPE 關鍵字值,即使應用程式指定了一個有效值
 28 - 說明實際的直欄為雙倍直欄
 29 - 小數直欄的 ADO 實例 - 除去 x 值的前導零,其中 x 為 1 > x > -1
(某些 MDAC 版本需要此效果)
 30 - 快取最佳化時,停止使用儲存程序
 31 - 回報 SQLStatistics 呼叫別名的統計值
 32 - 置換 SQL 程式 -727 原因碼 4 處理程序
 33 - 在轉換成字元時,傳回時間戳記的 ISO 版本
      (相對於 ODBC 版本)
 34 - 以 CHAR 名稱來回報 CHAR FOR BIT DATA 直欄
 35 - SQL_DESC_BASE_TABLE_NAMER 被要求下回報一個無效的表格名稱 - ADO 唯讀
      最佳化
 36 - 保留
 37 - 保留


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]