行為變更是介面 語法 保持不變但 語 意已變更的變更。 針對這些變更,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。 因此,如果 Driver Manager 收到 SQLAllocEnv 的呼叫,它會將應用程式辨識為 ODBC 2。x 應用程式。
SQL_ATTR_ODBC_VERSION屬性會影響 ODBC 3 的三個不同層面。x 驅動程式的行為:
SQLSTATEs
日期、時間和時間戳的數據類型
SQLTable 中的CatalogName 自變數接受 ODBC 3 中的搜尋模式。x,但不在 ODBC 2 中。x
SQL_ATTR_ODBC_VERSION環境屬性的設定不會影響 SQLSetParam 或 SQLBindParam。 SQLColAttribute 也不受此位影響。 雖然 SQLColAttribute 會傳回受 ODBC 版本影響的屬性(日期類型、有效位數、小數位數和長度),但預期的行為取決於 FieldIdentifier 自變數的值。 當 FieldIdentifier 等於SQL_DESC_TYPE時, SQLColAttribute 會傳回 ODBC 3。日期、時間和時間戳的 x 代碼;當 FieldIdentifier 等於 SQL_COLUMN_TYPE 時, SQLColAttribute 會傳回 ODBC 2。日期、時間和時間戳的 x 代碼。
本節包含下列主題。