SQLGetEnvAttr 函式

符合性
推出版本:ODBC 3.0 標準合規:ISO 92

總結
SQLGetEnvAttr 會回傳當前環境屬性的設定。

Syntax

  
SQLRETURN SQLGetEnvAttr(  
     SQLHENV        EnvironmentHandle,  
     SQLINTEGER     Attribute,  
     SQLPOINTER     ValuePtr,  
     SQLINTEGER     BufferLength,  
     SQLINTEGER *   StringLengthPtr);  

論點

環境控制
[輸入]環境控制。

Attribute
[輸入]屬性要取回。

ValuePtr
[輸出]指標指向緩衝區,回傳屬性指定的當前值。

ValuePtrNULL,StringLengthPtr 仍會回傳 ValuePtr 指向緩衝區中可返回的總位元組數(不含字元資料的空終止字元)。

BufferLength
[輸入]如果 ValuePtr 指向一個字串,這個參數應該是 *ValuePtr 的長度。 若 *ValuePtr 為整數,則忽略 BufferLength 。 若 *ValuePtr 是 Unicode 字串(呼叫 SQLGetEnvAttrW 時), BufferLength 參數必須為偶數。 若屬性值不是字串,則 BufferLength 未被使用。

StringLengthPtr
[輸出]一個指向緩衝區的指標,用來回傳 *ValuePtr 中可回傳的總位元組數(不含空終端字元)。 若屬性值為字串且可回傳的位元組數大於或等於 BufferLength,則 *ValuePtr 中的資料會被截斷為 BufferLength 減去一個 null 終止字元的長度,並由驅動程式進行 null 終止。

Returns

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_NO_DATA、SQL_ERROR或SQL_INVALID_HANDLE。

Diagnostics

SQLGetEnvAttr 回傳 SQL_ERROR 或 SQL_SUCCESS_WITH_INFO 時,可以透過呼叫 SQLGetDiagRec 並設定 HandleType 為 SQL_HANDLE_ENV 和 Handle 作為 Handle,取得相關的 SQLSTATE 值。 下表列出 SQLGetEnvAttr 通常回傳的 SQLSTATE 值,並在此函式的情境中逐一說明;「(DM)」符號會置於驅動程式管理器回傳的 SQLSTATE 描述前。 除非另有說明,否則與每個 SQLSTATE 值相關聯的傳回碼會SQL_ERROR。

SQLSTATE 錯誤 說明
01000 一般警告 驅動程式特定的資訊訊息。 (函式會傳回SQL_SUCCESS_WITH_INFO。)
01004 字串數據,右截斷 *ValuePtr 中回傳的資料被截斷為 BufferLength 減去空終止字元。 未截斷字串值的長度會以 *StringLengthPtr 回傳。 (函式會傳回SQL_SUCCESS_WITH_INFO。)
HY000 一般誤差 發生錯誤,其中沒有特定的 SQLSTATE,也沒有定義任何實作特定的 SQLSTATE。 *MessageText 緩衝區中 SQLGetDiagRec回的錯誤訊息描述錯誤及其原因。
HY001 記憶體配置錯誤 驅動程式無法配置支援執行或完成函式所需的記憶體。
HY010 函式順序錯誤 (DM) SQL_ATTR_ODBC_VERSION 尚未透過 SQLSetEnvAttr 設定。 如果你使用 SQLAllocHandleStd,不需要明確設定SQL_ATTR_ODBC_VERSION
HY013 記憶體管理錯誤 無法處理函式呼叫,因為基礎記憶體物件無法存取,可能是因為記憶體不足的情況。
HY092 無效屬性/選項識別碼 參數 Attribute 所指定的值,對於驅動程式支援的 ODBC 版本並不適用。
HY117 聯機因為未知的交易狀態而暫停。 只允許中斷連線和唯讀函式。 (DM) 如需暫停狀態的詳細資訊,請參閱 SQLEndTran 函式
HYC00 未實作選擇性功能 參數 Attribute 所指定的值是驅動程式支援但未支援的 ODBC 版本的有效 ODBC 環境屬性。
IM001 驅動程式不支援此函式 (DM) 對應 EnvironmentHandle 的驅動程式不支援此功能。

評論

屬性列表請參見 SQLSetEnvAttr。 沒有驅動程式專屬的環境屬性。 如果 Attribute 指定一個回傳字串的屬性, ValuePtr 必須是指向緩衝區的指標,回傳該字串。 字串的最大長度,包括空終止位元組,將是 BufferLength 位元組。

SQLGetEnvAttr 可以在配置到環境句柄釋放之間的任何時間呼叫。 應用程式成功設定的所有環境屬性會持續存在,直到 EnvironmentHandle 上以 HandleType 為 SQL_HANDLE_ENV 呼叫 SQLFreeHandle 為止。 在 ODBC 3*.x* 中,可以同時分配多個環境句柄。 當另一個環境被分配時,一個環境的環境屬性不會受到影響。

Note

SQL_ATTR_OUTPUT_NTS 環境屬性被符合標準的應用程式所支援。 當呼叫 SQLGetEnvAttr 時,ODBC 3*.x* 驅動程式管理器總是回傳此屬性的 SQL_TRUE。 SQL_ATTR_OUTPUT_NTS 只能透過呼叫 SQLSetEnvAttr 來設定為 SQL_TRUE。

如需相關信息 看!
傳回連接屬性的設定 SQLGetConnectAttr 函式
傳回語句屬性的設定 SQLGetStmtAttr 函式
設定連線屬性 SQLSetConnectAttr 函式
設定環境屬性 SQLSetEnvAttr Function
設定語句屬性 SQLSetStmtAttr 函式