Perubahan perilaku
Perubahan perilaku adalah perubahan yang sintaks antarmukanya tetap sama, tetapi semantik telah berubah. Untuk perubahan ini, fungsionalitas yang digunakan dalam ODBC 2.x bereaksi berbeda dari fungsionalitas yang sama di ODBC 3.x.
Apakah aplikasi menunjukkan ODBC 2.perilaku x atau ODBC 3.perilaku x ditentukan oleh atribut lingkungan SQL_ATTR_ODBC_VERSION. Nilai 32-bit ini diatur ke SQL_OV_ODBC2 untuk menunjukkan ODBC 2.perilaku x , dan SQL_OV_ODBC3 untuk menunjukkan ODBC 3.perilaku x .
Atribut lingkungan SQL_ATTR_ODBC_VERSION diatur oleh panggilan ke SQLSetEnvAttr. Setelah aplikasi memanggil SQLAllocHandle untuk mengalokasikan handel lingkungan, aplikasi harus segera memanggilSQLSetEnvAttr untuk mengatur perilaku yang dipamerkannya. (Akibatnya, ada status lingkungan baru untuk menjelaskan handel lingkungan dalam status yang dialokasikan, tetapi tanpa versi.) Untuk informasi selengkapnya, lihat Lampiran B: Tabel Transisi Status ODBC.
Aplikasi menyatakan perilaku apa yang dipamerkannya dengan atribut lingkungan SQL_ATTR_ODBC_VERSION, tetapi atribut tidak berpengaruh pada koneksi aplikasi dengan ODBC 2.x atau ODBC 3.x driver. ODBC 3.aplikasi x dapat terhubung ke ODBC 2.x atau 3.x driver, apa pun pengaturan atribut lingkungan.
ODBC 3.aplikasi x tidak boleh memanggil SQLAllocEnv. Akibatnya, jika Driver Manager menerima panggilan ke SQLAllocEnv, ia mengenali aplikasi sebagai ODBC 2.aplikasi x .
Atribut SQL_ATTR_ODBC_VERSION memengaruhi tiga aspek berbeda dari ODBC 3.perilaku driver x :
SQLSTATE
Jenis data untuk tanggal, waktu, dan tanda waktu
Argumen CatalogName di SQLTables menerima pola pencarian di ODBC 3.x, tetapi tidak di ODBC 2.X
Pengaturan atribut lingkungan SQL_ATTR_ODBC_VERSION tidak memengaruhi SQLSetParam atau SQLBindParam. SQLColAttribute juga tidak terpengaruh oleh bit ini. Meskipun SQLColAttribute mengembalikan atribut yang dipengaruhi oleh versi ODBC (jenis tanggal, presisi, skala, dan panjang), perilaku yang dimaksud ditentukan oleh nilai argumen FieldIdentifier . Ketika FieldIdentifier sama dengan SQL_DESC_TYPE, SQLColAttribute mengembalikan ODBC 3.kode x untuk tanggal, waktu, dan tanda waktu; ketika FieldIdentifier sama dengan SQL_COLUMN_TYPE, SQLColAttribute mengembalikan ODBC 2.kode x untuk tanggal, waktu, dan tanda waktu.
Bagian ini berisi topik berikut.