應用程式開發:呼叫層次介面 (CLI)

| | |

Trusted_Connection CLI/ODBC 配置關鍵字

|

|
|
關鍵字說明:
|
容許與目前已鑑別的使用者建立連線。 |
|
語法:
|
Trusted_Connection=Yes | | |
註:
|
如果設定在 db2cli.ini 檔案,此關鍵字將沒有效果。 |應該改在 SQLDriverConnect() 的連線字串中提供它。
|
|
預設值:
|
DB2 CLI 使用 SQLDriverConnect() 的連線字串中提供的使用者 ID 及密碼資訊,而非目前已鑑別的使用者的使用者 ID 及密碼。 |
|
用法附註:
|
|

連接至資料庫的 DB2 CLI 應用程式通常使用函數 SQLDriverConnect() 來連接。 |此函數的其中一個輸入引數是 DriverCompletion 值,它會決定何時將開啟視窗。 |下列是 DriverCompletion 的值: |

|

|

| |
註:
|
您可以在 SQLDriverConnect() 的文件中找到有關 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 函數的診斷表格更新 (CLI)

SQLDescribeParam() 函數會傳回與已執行 PREPARE 的 SQL 陳述式相關聯的參數記號的說明。

已利用 SQLSTATE HYC00 更新了診斷表格。

診斷

表 24. SQLDescribeParam SQLSTATEs
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 連線屬性

SQL_ATTR_PING_DB (DB2 CLI v8.2)

SQL_ATTR_PING_DB 是一種 32 位元整數,與 SQLGetConnectAttr() 函數搭配使用,以取得 DB2 UDB 用戶端與 DB2 UDB 伺服器之間的現存連線的網路回應時間。 所報告的回應時間是以微秒為單位。

如果先前已建立連線,但已被資料庫捨棄,將報告 0 值。如果應用程式已關閉連線,將報告 08003 的 SQLSTATE。這個連線屬性可由 SQLGetConnectAttr() 傳回, 但無法由 SQLSetConnectAttr() 設定。任何設定這個屬性的嘗試都將導致 HYC00 的 SQLSTATE (無法使用驅動程式)。

SQLBindParameter 函數 (CLI)

在 SQLBindParameter 函數的文件中,「輸入」參數一節中的說明不正確。 正確的說明如下:

輸入參數
0 ColumnSize 表示 DB2 CLI 將對所提供的 SQL 類型使用最大長度,做為直欄或儲存程序參數的大小。DB2 CLI 將使用這個大小執行任何必要的轉換。

SQLMoreResults 函數 (CLI)

在 SQLMoreResults 函數的文件中,不正確地參照 SQL_ATTR_ROW_ARRAY_SIZE 陳述式屬性。正確的陳述式屬性是 SQL_ATTR_PARAMSET_SIZE。「用法」一節的內容應該如下:

這個函數是用來在執行下列查詢時,循序傳回多個結果集:

其他環境屬性

除了成為 CLI 連線屬性外,也支援下列屬性作為 CLI 環境屬性:

如需這些屬性的相關資訊,請參閱「DB2 資訊中心」或 CLI Guide and Reference Volume 2 中的 CLI 連線屬性文件。

動態可捲動游標需求

若要在動態可捲動游標的結果集中對橫列執行更新及刪除, UPDATE 或 DELETE 陳述式必須包括基本表格中至少一個唯一鍵的所有直欄。 這可以是主要鍵或任何其它唯一鍵。

RetCatalogAsCurrServer CLI/ODBC 配置關鍵字

關鍵字說明:
型錄函數會對型錄直欄傳回 CURRENT SERVER 值,而不是空值。
db2cli.ini 關鍵字語法:
RetCatalogAsCurrServer= 0 | 1
預設值:
如果目標 DBMS 對型錄直欄傳回空值,將不會替代 CURRENT SERVER 值。
用法附註:
如果目標 DBMS 的型錄函數對型錄直欄傳回空值, 將 RetCatalogAsCurrServer 設為 1 反而會導致 DBMS 傳回 CURRENT SERVER 值。

例如,假設型錄函數 SQLTables() 傳回結果集, 其中的 TABLE_CAT 直欄值是空值。將 RetCatalogAsCurrServer 設為 1 會導致 DBMS 在 TABLE_CAT 直欄中傳回 CURRENT SERVER 值。

註:
DB2 UDB for Linux、UNIX(R) 及 Windows(R) 8.2 版 FixPak 3 (相當於 8.1 版 FixPak 10) 及更新版本支援這個關鍵字。

ReceiveTimeout CLI/ODBC 配置關鍵字

關鍵字說明:
指定在已建立連線時,於終止嘗試並產生通訊逾時錯誤之前,等待伺服器回覆的時間 (以秒為單位)。
db2cli.ini 關鍵字語法:
ReceiveTimeout = 0 | 1 | 2 | ... | 32767
預設值:
在已建立連線時,用戶端無限等待伺服器的回覆。
相等的連線屬性:
SQL_ATTR_RECEIVE_TIMEOUT
用法附註:
預設值 0 指出用戶端無限等待回覆。 在建立連線期間,接收逾時沒有任何作用;只有 TCP/IP 支援它,任何其它通訊協定則會忽略它。

SQL_ATTR_RECEIVE_TIMEOUT 連線屬性

SQL_ATTR_RECEIVE_TIMEOUT (DB2 CLI v8)
這是 32 位元整數值,代表在已建立連線時,於終止嘗試並產生通訊逾時錯誤之前, 用戶端等待伺服器回覆的秒數。預設值 0 指出用戶端無限等待回覆。 在建立連線期間,接收逾時沒有任何作用;只有 TCP/IP 支援它,任何其它通訊協定則會忽略它。 支援值是從 0 至 32767 的整數。

Reopt CLI/ODBC 配置關鍵字

關鍵字說明:
啟用具有特別暫存區或參數記號之 SQL 陳述式的查詢最佳化或重新最佳化。
db2cli.ini 關鍵字語法:
Reopt = 2 | 3 | 4
預設值:
在查詢執行時間,不會發生任何查詢最佳化。編譯器所選擇的預設估計值是用於特別暫存區或參數記號。
相等的陳述式及連線屬性:
SQL_ATTR_REOPT
用法附註:
發生最佳化的方式為使用在查詢執行時間可對特別暫存區或參數記號使用的值, 代替編譯器所選擇的預設估計值。關鍵字的有效值如下: "NULLIDR1" 及 "NULLIDRA" 是保留的資料包集名稱, 而且在使用時,分別暗示 REOPT ONCE 及 REOPT ALWAYS。 您必須利用下列命令來明確地建立這些資料包集:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
如果同時指定了 Reopt 及 CurrentPackageSet 關鍵字, 將優先採用 CurrentPackageSet。

SQL_ATTR_REOPT 陳述式及連線屬性

SQL_ATTR_REOPT (DB2 CLI v8)
這是 32 位元整數值,用來對包含特別暫存區或參數記號的 SQL 陳述式啟用查詢最佳化。 發生最佳化的方式為使用在查詢執行時間可對特別暫存區或參數記號使用的值, 代替編譯器所選擇的預設估計值。屬性的有效值如下: "NULLIDR1" 及 "NULLIDRA" 是保留的資料包集名稱, 而且在使用時,分別暗示 REOPT ONCE 及 REOPT ALWAYS。 您必須利用下列命令來明確地建立這些資料包集:
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
SQL_ATTR_REOPT 及 SQL_ATTR_CURRENT_PACKAGE_SET 互斥, 因此,如果設定了其中一個,就不容許設定另外一個。

CurrentPackageSet CLI/ODBC 配置關鍵字

關鍵字說明:
在每次連線後發出 SET CURRENT PACKAGESET 陳述式。
db2cli.ini 關鍵字語法:
CurrentPackageSet = schema name
預設值:
不添加子句。
相等的連線屬性:
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。

SQL_ATTR_CURRENT_PACKAGE_SET 連線屬性

SQL_ATTR_CURRENT_PACKAGE_SET (DB2 CLI v5)
這是以空值終止的字串,指出將使用哪一個綱目名稱 (集合 ID) 來選取後續 SQL 陳述式的資料包。 設定這個屬性將導致發出 SET CURRENT PACKAGESET SQL 陳述式。 如果在連線之前設定了這個屬性,將在連線時間發出 SET CURRENT PACKAGESET SQL 陳述式。

CLI/ODBC 應用程式發出動態 SQL 陳述式。 您可以使用這個連線,來控制用來執行這些陳述式的專用權:

現在,來自 CLI/ODBC 應用程式的 SQL 陳述式將在指定的綱目下執行, 並使用那裡定義的專用權。

設定 CLI/ODBC 配置關鍵字 CURRENTPACKAGESET 是指定綱目名稱的替代方法。

下列是保留的資料包集名稱:"NULLID "、"NULLIDR1"、"NULLIDRA"。

SQL_ATTR_REOPT 及 SQL_ATTR_CURRENT_PACKAGE_SET 互斥,因此,如果設定了其中一個,就不容許設定另外一個。

MapBigintCDefault CLI/ODBC 配置關鍵字

關鍵字說明:
指定預設 C 類型的 BIGINT 直欄及參數記號。
db2cli.ini 關鍵字語法:
MapBigintCDefault = 0 | 1 | 2
預設值:
BIGINT 資料的預設 C 類型表示法為 SQL_C_BIGINT。
用法附註:
 

MapBigintCDefault 控制當 SQL_C_DEFAULT 指定給 BIGINT 直欄及參數記號時所使用的 C 類型。 這個關鍵字應該主要與無法處理 8 位元組整數的 Microsoft(R) 應用程式 (如 Microsoft Access) 搭配使用。 請設定如下的 MapBigintCDefault:

這個關鍵字會影響 CLI 函數的行為,在這裡 SQL_C_DEFAULT 必須指定為 C 類型,如 SQLBindParameter()SQLBindCol()SQLGetData()

DescribeOutputLevel CLI/ODBC 配置關鍵字

關鍵字說明:
設定在提出準備或說明要求期間,CLI 驅動程式所要求之輸出直欄說明資訊的層次。
db2cli.ini 關鍵字語法:
DescribeOutputLevel = 0 | 1 | 2 | 3
預設值:
要求表 25 第二層中列出的說明資訊。
用法附註:
 

這個關鍵字控制 CLI 驅動程式在準備或說明要求上所要求的資訊數量。 依預設,當伺服器收到一個說明要求時, 它會傳回結果集直欄的表 25 第 2 層中包含的資訊。但是,應用程式可能不需要此資訊的全部, 或可能需要額外的資訊。

將 DescribeOutputLevel 關鍵字設為符合用戶端應用程式需求的層次, 可以增進效能,因為用戶端與伺服器之間傳送的說明資料會限制為應用程式所需的最少數量。如果 DescribeOutputLevel 設定太低,它可能會影響應用程式的功能 (取決於應用程式的需求而定)。 在這種情況下,擷取說明資訊的 CLI 函數可能不會失敗,但是傳回的資訊可能不完整。

支援的 DescribeOutputLevel 設定如下:

下表列出構成說明資訊的欄位,當伺服器收到準備或說明要求時, 即會傳回這個說明資訊。這些欄位將分組成幾個層次群組,而且 DescribeOutputLevel CLI/ODBC 配置關鍵字會控制 CLI 驅動程式可以要求哪些層次的說明資訊。

註:
並非所有 DB2(R) 伺服器都支援所有層次的說明資訊。 下列 DB2 伺服器支援所有層次的說明資訊:DB2 Universal Database(TM) (UDB) for Linux(TM)、UNIX(R)及 Windows(R) 第 8 版及更新版本、DB2 UDB for z/OS(R) 第 8 版及更新版本,以及 DB2 UDB for iSeries(TM) 5.3 版及更新版本。 所有其他 DB2 伺服器僅支援 DescribeOutputLevel 的 2 或 0 設定。
表 25. 說明資訊的層次
第 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
[ 頁面頂端 |前一頁 | 下一頁 | 目錄 ]