Lampiran B: Tabel Transisi Status ODBC

Tabel dalam lampiran ini menunjukkan bagaimana fungsi ODBC menyebabkan transisi lingkungan, koneksi, pernyataan, dan status deskriptor. Status lingkungan, koneksi, pernyataan, atau deskriptor biasanya menentukan kapan fungsi yang menggunakan jenis handel yang sesuai (lingkungan, koneksi, pernyataan, atau deskriptor) dapat dipanggil. Lingkungan, koneksi, pernyataan, dan deskriptor menyatakan tumpang tindih kira-kira seperti yang ditunjukkan dalam ilustrasi berikut. Misalnya, tumpang tindih yang tepat dari status koneksi C5 dan C6 dan pernyataan menyatakan S1 hingga S12 bergantung pada sumber data, karena transaksi dimulai pada waktu yang berbeda pada sumber data yang berbeda, dan status deskriptor D1i (deskriptor yang dialokasikan secara implisit) tergantung pada status pernyataan yang terkait dengan deskriptor, sementara status D1e (deskriptor yang dialokasikan secara eksplisit) independen dari status pernyataan apa pun. Untuk deskripsi setiap status, lihat Transisi Lingkungan, Transisi Koneksi, Transisi Pernyataan, dan Transisi Deskriptor, nanti dalam lampiran ini.

Lingkungan dan status koneksi tumpang tindih sebagai berikut:

Environment and connection states overlap

Status koneksi dan pernyataan tumpang tindih sebagai berikut:

Connection and statement states overlap

Pernyataan dan deskriptor menyatakan tumpang tindih sebagai berikut:

Statement and descriptor states overlap

Status koneksi dan deskriptor tumpang tindih sebagai berikut:

Connection and descriptor states overlap

Setiap entri dalam tabel transisi bisa menjadi salah satu nilai berikut:

  • -- -Status tidak berubah setelah menjalankan fungsi.

  • E

    n , C_n_, S_n_, atau D_n_ - Status lingkungan, koneksi, pernyataan, atau deskriptor berpindah ke status yang ditentukan.

  • (IH) - Handel yang tidak valid diteruskan ke fungsi. Jika handel adalah handel null atau merupakan handel yang valid dari jenis yang salah - misalnya, handel koneksi diteruskan ketika handel pernyataan diperlukan - fungsi mengembalikan SQL_INVALID_HANDLE; jika tidak, perilaku tidak terdefinisi dan mungkin fatal. Kesalahan ini hanya ditampilkan ketika itu adalah satu-satunya kemungkinan hasil dari memanggil fungsi dalam status yang ditentukan. Kesalahan ini tidak mengubah status dan selalu terdeteksi oleh Manajer Driver, seperti yang ditunjukkan oleh tanda kurung.

  • NS - Status Berikutnya. Transisi pernyataan sama seperti jika pernyataan belum melalui status asinkron. Misalnya, misalkan pernyataan yang membuat kumpulan hasil memasuki status S11 dari status S1 karena SQLExecDirect mengembalikan SQL_STILL_EXECUTING. Notasi NS dalam status S11 berarti bahwa transisi untuk pernyataan sama dengan yang untuk pernyataan dalam status S1 yang membuat tataan hasil. Jika SQLExecDirect mengembalikan kesalahan, pernyataan tetap dalam status S1; jika berhasil, pernyataan berpindah ke status S5; jika membutuhkan data, pernyataan berpindah ke status S8; dan jika masih dijalankan, pernyataan tetap dalam status S11.

  • XXXXX atau (XXXXX) - SQLSTATE yang terkait dengan tabel transisi; SQLSTATEs yang terdeteksi oleh Driver Manager diapit tanda kurung. Fungsi mengembalikan SQL_ERROR dan SQLSTATE yang ditentukan, tetapi statusnya tidak berubah. Misalnya, jika SQLExecute dipanggil sebelum SQLPrepare, SQLSTATE HY010 mengembalikan (Kesalahan urutan fungsi).

Catatan

Tabel tidak memperlihatkan kesalahan yang tidak terkait dengan tabel transisi yang tidak mengubah status. Misalnya, ketika SQLAllocHandle dipanggil dalam status lingkungan E1 dan mengembalikan SQLSTATE HY001 (Kesalahan alokasi memori), lingkungan tetap dalam status E1; ini tidak ditampilkan dalam tabel transisi lingkungan untuk SQLAllocHandle.

Jika lingkungan, koneksi, pernyataan, atau deskriptor dapat berpindah ke lebih dari satu status, setiap status yang mungkin ditampilkan dan satu atau beberapa catatan kaki menjelaskan kondisi di mana setiap transisi berlangsung. Catatan kaki berikut mungkin muncul dalam tabel apa pun.

Catatan kaki Arti
b Sebelum atau sesudahnya. Kursor diposisikan sebelum awal kumpulan hasil atau setelah akhir tataan hasil.
c Fungsi saat ini. Fungsi saat ini dijalankan secara asinkron.
d Membutuhkan data. Fungsi mengembalikan SQL_NEED_DATA.
e Kesalahan. Fungsi mengembalikan SQL_ERROR.
i Baris tidak valid. Kursor diposisikan pada baris dalam tataan hasil dan baris telah dihapus atau terjadi kesalahan dalam operasi pada baris. Jika array status baris ada, nilai dalam array status baris untuk baris SQL_ROW_DELETED atau SQL_ROW_ERROR. (Array status baris ditunjukkan oleh atribut pernyataan SQL_ATTR_ROW_STATUS_PTR.)
Nf Tidak ditemukan. Fungsi mengembalikan SQL_NO_DATA. Ini tidak berlaku ketika SQLExecDirect, SQLExecute, atau SQLParamData mengembalikan SQL_NO_DATA setelah menjalankan pernyataan pembaruan atau penghapusan yang dicari.
Np Tidak disiapkan. Pernyataan itu tidak disiapkan.
nr Tidak ada hasil. Pernyataan tidak akan atau tidak membuat tataan hasil.
O Fungsi lainnya. Fungsi lain adalah mengeksekusi secara asinkron.
p Disiapkan. Pernyataan itu disiapkan.
r Hasil. Pernyataan akan atau memang membuat tataan hasil (mungkin kosong).
s Sukses. Fungsi mengembalikan SQL_SUCCESS_WITH_INFO atau SQL_SUCCESS.
v Baris yang valid. Kursor diposisikan pada baris dalam tataan hasil, dan baris telah berhasil disisipkan, berhasil diperbarui, atau operasi lain pada baris telah berhasil diselesaikan. Jika array status baris ada, nilai dalam array status baris untuk baris SQL_ROW_ADDED, SQL_ROW_SUCCESS, atau SQL_ROW_UPDATED. (Array status baris ditunjukkan oleh atribut pernyataan SQL_ATTR_ROW_STATUS_PTR.)
x Mengeksekusi. Fungsi mengembalikan SQL_STILL_EXECUTING.

SQLFreeHandle

Dalam contoh ini, baris dalam tabel transisi status lingkungan untuk SQLFreeHandle saat HandleType SQL_HANDLE_ENV adalah sebagai berikut.

E0

Tidak dialokasikan
E1

Dialokasikan
E2

Koneksi
(IH) E0 (HY010)

Jika SQLFreeHandle dipanggil dalam status lingkungan E0 dengan HandleType diatur ke SQL_HANDLE_ENV, Manajer Driver mengembalikan SQL_INVALID_HANDLE. Jika dipanggil dalam status E1 dengan HandleType diatur ke SQL_HANDLE_ENV, lingkungan berpindah ke status E0 jika fungsi berhasil dan tetap dalam status E1 jika fungsi gagal. Jika dipanggil dalam status E2 dengan HandleType diatur ke SQL_HANDLE_ENV, Driver Manager selalu mengembalikan SQL_ERROR dan SQLSTATE HY010 (Kesalahan urutan fungsi) dan lingkungan tetap dalam status E2.

Untuk memahami tabel transisi status, perlu untuk memahami item mana (lingkungan, koneksi, pernyataan, atau deskriptor) yang mereka rujuk. Misalkan fungsi menerima handel item jenis X. Tabel transisi status X untuk fungsi tersebut menjelaskan cara memanggil fungsi, dengan handel item jenis X, memengaruhi item tersebut. Misalnya, SQLDisconnect menerima handel koneksi. Tabel transisi status koneksi untuk SQLDisconnect menjelaskan bagaimana SQLDisconnect memengaruhi status koneksi yang dipanggilnya.

Misalkan fungsi menerima handel item jenis Y, di mana Y tidak sama dengan X. Tabel transisi status X untuk fungsi tersebut menjelaskan cara memanggil fungsi, dengan handel tipe X yang terkait dengan item tipe Y, memengaruhi item tipe Y. Misalnya, tabel transisi status pernyataan untuk SQLDisconnect menjelaskan bagaimana SQLDisconnect memengaruhi status pernyataan saat dipanggil dengan handel koneksi yang terkait dengan pernyataan tersebut.

Lampiran ini berisi topik berikut.