行為變更

行為變更是介面 語法 維持不變但 語意 已變更的變更。 針對這些變更,ODBC 2 中使用的功能。x 的行為與 ODBC 3 中的相同功能不同。x.

應用程式是否要展示 ODBC 2。x 行為或 ODBC 3。x 行為取決於SQL_ATTR_ODBC_VERSION環境屬性。 這個 32 位值會設定為 SQL_OV_ODBC2,以展示 ODBC 2。x 行為和SQL_OV_ODBC3來展示 ODBC 3。x 行為。

SQL_ATTR_ODBC_VERSION環境屬性是由 SQLSetEnvAttr的呼叫所設定。 應用程式呼叫 SQLAllocHandle 以配置環境控制碼之後,它必須立即呼叫SQLSetEnvAttr 來設定它呈現的行為。 (因此,有新的環境狀態可描述配置但無版本狀態的環境控制碼。) 如需詳細資訊,請參閱 附錄 B:ODBC 狀態轉換資料表

應用程式會說明其使用 SQL_ATTR_ODBC_VERSION 環境屬性所呈現的行為,但屬性對應用程式與 ODBC 2 的連線沒有任何影響。x 或 ODBC 3。x 驅動程式。 ODBC 3。x 應用程式可以連線到 ODBC 2。x 或 3。不論 環境屬性的設定為何,x 驅動程式。

ODBC 3.x 應用程式絕對不應該呼叫 SQLAllocEnv。 因此,如果驅動程式管理員收到 SQLAllocEnv的呼叫,它會將應用程式辨識為 ODBC 2。x 應用程式。

SQL_ATTR_ODBC_VERSION屬性會影響 ODBC 3 的三個不同層面。x 驅動程式的行為:

  • SQLSTATE

  • 日期、時間和時間戳記的資料類型

  • SQLTables中的CatalogName引數接受 ODBC 3 中的搜尋模式。x,但不在 ODBC 2 中。X

SQL_ATTR_ODBC_VERSION環境屬性的設定不會影響 SQLSetParamSQLBindParamSQLColAttribute 也不會受到這個位的影響。 雖然 SQLColAttribute 會傳回受到 ODBC 版本 (日期類型、有效位數、小數位數和長度) 影響的屬性,但預期的行為取決於 FieldIdentifier 引數的值。 當 FieldIdentifier 等於 SQL_DESC_TYPE時, SQLColAttribute 會傳回 ODBC 3。日期、時間和時間戳記的x 代碼;當 FieldIdentifier 等於 SQL_COLUMN_TYPE時, SQLColAttribute 會傳回 ODBC 2。日期、時間和時間戳記的x 代碼。

此章節包含下列主題。