連接至資料庫的 DB2 CLI 應用程式通常使用函數 SQLDriverConnect() 來連接。 |此函數的其中一個輸入引數是 DriverCompletion 值,它會決定何時將開啟視窗。 |下列是 DriverCompletion 的值: |
||
| |部份應用程式 (例如,Kerberos 環境中的應用程式) 可能需要使用者不提供使用者 ID 或密碼, |即可連接至 DB2 UDB 伺服器。 |如果應用程式在 SQLDriverConnect() 呼叫上使用 SQL_DRIVER_NO_PROMPT 選項, |將在沒有使用者身份鑑別的情況下嘗試連線。於是,不需要此關鍵字。
| |如果包括協力廠商應用程式,且應用程式使用的提示層次是 SQL_DRIVER_NO_PROMPT 以外的值, |DB2 CLI 將開啟一個視窗,要求遺漏的資訊。 |將 Trusted_Connection 設為 Yes (方法為將它提供給 SQLDriverConnect() 的輸入連線字串) (『Trusted_Connection=Yes"), |會導致 DB2 CLI 忽略任何來自連線字串的使用者 ID 或密碼字串 (包括空白字串),並忽略連線函數的提示層次。 DB2 CLI 會使用目前已鑑別的使用者,嘗試與資料庫建立連線。 |如果連線嘗試失敗,將提示使用者提供使用者 ID 及密碼。
| |此關鍵字只在 SQLDriverConnect() 的連線字串中使用;將它設定在 db2cli.ini 檔案沒有效果。
|SQLDescribeParam() 函數會傳回與已執行 PREPARE 的 SQL 陳述式相關聯的參數記號的說明。
已利用 SQLSTATE HYC00 更新了診斷表格。
SQLSTATE | 說明 | 解釋 |
---|---|---|
HYC00 | 無法使用驅動程式 | 無法在伺服器上存取綱目函數儲存程序。 請在伺服器上安裝綱目函數儲存程序,並確定可以存取它們。 |
「DB2 呼叫層次介面 (DB2 CLI)」可以非同步執行函數子集。 在呼叫函數之後,但在該函數已完成執行之前, DB2 CLI 驅動程式會將控制項傳回給應用程式。每次呼叫函數, 函數就會傳回 SQL_STILL_EXECUTING,直到它完成執行, 這時它會傳回不同的值 (例如,SQL_SUCCESS)。
非同步執行只有利於單一執行緒作業系統。 在多重執行緒作業系統上執行的應用程式應該在個別執行緒上執行函數。 對於那些通常傳送要求到伺服器,然後等待回應的函數,才能進行非同步執行。 非同步執行的函數不是等待,而是將控制項傳回給應用程式。 然後,應用程式可以執行其它作業,或將控制項傳回給作業系統, 並使用岔斷來反覆地輪詢函數,直到傳回不是 SQL_STILL_EXECUTING 的回覆碼為止。
從 8.2 版 FixPak 1 (相當於 8.1 版 FixPak 8) 開始,支援非同步執行 CLI 已併入 DB2 Universal Database (UDB)。如需這個特性的文件,請參閱 DB2 UDB 第 7 版的「資訊中心」, 網址為:http://publib.boulder.ibm.com/infocenter/db2v7luw/index.jsp。第 7 版文件中的所有資訊都適用於 8.2 版 FixPak 1 (相當於 8.1 版 FixPak 8) 及更新版本。 DB2 第 8 版的「資訊中心」不包含這種特性的任何文件。
SQL_ATTR_PING_DB 是一種 32 位元整數,與 SQLGetConnectAttr() 函數搭配使用,以取得 DB2 UDB 用戶端與 DB2 UDB 伺服器之間的現存連線的網路回應時間。 所報告的回應時間是以微秒為單位。
如果先前已建立連線,但已被資料庫捨棄,將報告 0 值。如果應用程式已關閉連線,將報告 08003 的 SQLSTATE。這個連線屬性可由 SQLGetConnectAttr() 傳回, 但無法由 SQLSetConnectAttr() 設定。任何設定這個屬性的嘗試都將導致 HYC00 的 SQLSTATE (無法使用驅動程式)。
在 SQLBindParameter 函數的文件中,「輸入」參數一節中的說明不正確。 正確的說明如下:
在 SQLMoreResults 函數的文件中,不正確地參照 SQL_ATTR_ROW_ARRAY_SIZE 陳述式屬性。正確的陳述式屬性是 SQL_ATTR_PARAMSET_SIZE。「用法」一節的內容應該如下:
這個函數是用來在執行下列查詢時,循序傳回多個結果集:
除了成為 CLI 連線屬性外,也支援下列屬性作為 CLI 環境屬性:
如需這些屬性的相關資訊,請參閱「DB2 資訊中心」或 CLI Guide and Reference Volume 2 中的 CLI 連線屬性文件。
若要在動態可捲動游標的結果集中對橫列執行更新及刪除, UPDATE 或 DELETE 陳述式必須包括基本表格中至少一個唯一鍵的所有直欄。 這可以是主要鍵或任何其它唯一鍵。
例如,假設型錄函數 SQLTables() 傳回結果集, 其中的 TABLE_CAT 直欄值是空值。將 RetCatalogAsCurrServer 設為 1 會導致 DBMS 在 TABLE_CAT 直欄中傳回 CURRENT SERVER 值。
db2 bind db2clipk.bnd collection NULLIDR1 db2 bind db2clipk.bnd collection NULLIDRA如果同時指定了 Reopt 及 CurrentPackageSet 關鍵字, 將優先採用 CurrentPackageSet。
db2 bind db2clipk.bnd collection NULLIDR1 db2 bind db2clipk.bnd collection NULLIDRASQL_ATTR_REOPT 及 SQL_ATTR_CURRENT_PACKAGE_SET 互斥, 因此,如果設定了其中一個,就不容許設定另外一個。
在每次連線至資料庫後,這個選項會發出帶有 CurrentPackageSet 值的 SET CURRENT PACKAGESET SQL 陳述式。 依預設,不添加這個子句。
SET CURRENT PACKAGESET SQL 陳述式設定綱目名稱 (集合 ID), 用來選取要對後續 SQL 陳述式使用的資料包。
CLI/ODBC 應用程式發出動態 SQL 陳述式。 您可以使用這個選項,來控制用來執行這些陳述式的專用權:
現在,來自 CLI/ODBC 應用程式的 SQL 陳述式將在指定的綱目下執行, 並使用那裡定義的專用權。
下列是保留的資料包集名稱:"NULLID "、"NULLIDR1"、"NULLIDRA"。
如果同時指定了 Reopt 及 CurrentPackageSet 關鍵字,將優先採用 CurrentPackageSet。
CLI/ODBC 應用程式發出動態 SQL 陳述式。 您可以使用這個連線,來控制用來執行這些陳述式的專用權:
現在,來自 CLI/ODBC 應用程式的 SQL 陳述式將在指定的綱目下執行, 並使用那裡定義的專用權。
設定 CLI/ODBC 配置關鍵字 CURRENTPACKAGESET 是指定綱目名稱的替代方法。
下列是保留的資料包集名稱:"NULLID "、"NULLIDR1"、"NULLIDRA"。
SQL_ATTR_REOPT 及 SQL_ATTR_CURRENT_PACKAGE_SET 互斥,因此,如果設定了其中一個,就不容許設定另外一個。
MapBigintCDefault 控制當 SQL_C_DEFAULT 指定給 BIGINT 直欄及參數記號時所使用的 C 類型。 這個關鍵字應該主要與無法處理 8 位元組整數的 Microsoft(R) 應用程式 (如 Microsoft Access) 搭配使用。 請設定如下的 MapBigintCDefault:
這個關鍵字會影響 CLI 函數的行為,在這裡 SQL_C_DEFAULT 必須指定為 C 類型,如 SQLBindParameter()、SQLBindCol() 及 SQLGetData()。
這個關鍵字控制 CLI 驅動程式在準備或說明要求上所要求的資訊數量。 依預設,當伺服器收到一個說明要求時, 它會傳回結果集直欄的表 25 第 2 層中包含的資訊。但是,應用程式可能不需要此資訊的全部, 或可能需要額外的資訊。
將 DescribeOutputLevel 關鍵字設為符合用戶端應用程式需求的層次, 可以增進效能,因為用戶端與伺服器之間傳送的說明資料會限制為應用程式所需的最少數量。如果 DescribeOutputLevel 設定太低,它可能會影響應用程式的功能 (取決於應用程式的需求而定)。 在這種情況下,擷取說明資訊的 CLI 函數可能不會失敗,但是傳回的資訊可能不完整。
支援的 DescribeOutputLevel 設定如下:
下表列出構成說明資訊的欄位,當伺服器收到準備或說明要求時, 即會傳回這個說明資訊。這些欄位將分組成幾個層次群組,而且 DescribeOutputLevel CLI/ODBC 配置關鍵字會控制 CLI 驅動程式可以要求哪些層次的說明資訊。
第 1 層 | 第 2 層 | 第 3 層 |
---|---|---|
SQL_DESC_COUNT SQL_COLUMN_COUNT SQL_DESC_TYPE SQL_DESC_CONCISE_TYPE SQL_COLUMN_LENGTH SQL_DESC_OCTET_LENGTH SQL_DESC_LENGTH SQL_DESC_PRECISION SQL_COLUMN_PRECISION SQL_DESC_SCALE SQL_COLUMN_SCALE SQL_DESC_DISPLAY_SIZE SQL_DESC_NULLABLE SQL_COLUMN_NULLABLE SQL_DESC_UNSIGNED SQL_DESC_SEARCHABLE SQL_DESC_LITERAL_SUFFIX SQL_DESC_LITERAL_PREFIX SQL_DESC_CASE_SENSITIVE SQL_DESC_FIXED_PREC_SCALE |
第 1 層的所有欄位,以及: SQL_DESC_NAME SQL_DESC_LABEL SQL_COLUMN_NAME SQL_DESC_UNNAMED SQL_DESC_TYPE_NAME SQL_DESC_DISTINCT_TYPE SQL_DESC_REFERENCE_TYPE SQL_DESC_STRUCTURED_TYPE SQL_DESC_USER_TYPE SQL_DESC_LOCAL_TYPE_NAME SQL_DESC_USER_DEFINED_ TYPE_CODE |
第 1 層及第 2 層的所有欄位 ,以及: SQL_DESC_BASE_COLUMN_NAME SQL_DESC_UPDATABLE SQL_DESC_AUTO_UNIQUE_VALUE SQL_DESC_SCHEMA_NAME SQL_DESC_CATALOG_NAME SQL_DESC_TABLE_NAME SQL_DESC_BASE_TABLE_NAME |