符合性
推出版本:ODBC 3.0 標準合規:ISO 92
總結
SQLGetEnvAttr 會回傳當前環境屬性的設定。
Syntax
SQLRETURN SQLGetEnvAttr(
SQLHENV EnvironmentHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
論點
環境控制
[輸入]環境控制。
Attribute
[輸入]屬性要取回。
ValuePtr
[輸出]指標指向緩衝區,回傳屬性指定的當前值。
若 ValuePtr 為 NULL,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 函式 |