Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kesuaian
Versi Diperkenalkan: Kepatuhan Standar ODBC 3.0: ISO 92
Ringkasan
SQLGetDiagField mengembalikan nilai bidang saat ini dari rekaman struktur data diagnostik (terkait dengan handel tertentu) yang berisi informasi kesalahan, peringatan, dan status.
Sintaksis
SQLRETURN SQLGetDiagField(
SQLSMALLINT HandleType,
SQLHANDLE Handle,
SQLSMALLINT RecNumber,
SQLSMALLINT DiagIdentifier,
SQLPOINTER DiagInfoPtr,
SQLSMALLINT BufferLength,
SQLSMALLINT * StringLengthPtr);
Argumen
HandleType
[Input] Pengidentifikasi jenis handel yang menjelaskan jenis handel yang diagnostiknya diperlukan. Harus salah satu hal berikut:
SQL_HANDLE_DBC
SQL_HANDLE_DBC_INFO_TOKEN
SQL_HANDLE_DESC
SQL_HANDLE_ENV
SQL_HANDLE_STMT
SQL_HANDLE_DBC_INFO_TOKEN handel hanya digunakan oleh Driver Manager dan driver. Aplikasi tidak boleh menggunakan jenis handel ini. Untuk informasi selengkapnya tentang SQL_HANDLE_DBC_INFO_TOKEN, lihat Mengembangkan kesadaran Connection-Pool dalamDriver ODBC .
Menangani
[Input] Handel untuk struktur data diagnostik, dari jenis yang ditunjukkan oleh HandleType. Jika HandleType SQL_HANDLE_ENV, Handle dapat menjadi handel lingkungan bersama atau yang tidak dibagikan.
[Input] Menunjukkan rekaman status tempat aplikasi mencari informasi. Rekaman status diberi nomor dari 1. Jika argumen
DiagIdentifier
[Input] Menunjukkan bidang diagnostik yang nilainya akan dikembalikan. Untuk informasi selengkapnya, lihat bagian "DiagIdentifier Argumen" di "Komentar."
DiagInfoPtr
[Output] Arahkan ke buffer untuk mengembalikan informasi diagnostik. Jenis data tergantung pada nilai DiagIdentifier. Jika DiagInfoPtr adalah jenis bilangan bulat, aplikasi harus menggunakan buffer SQLULEN dan menginisialisasi nilai ke 0 sebelum memanggil fungsi ini, karena beberapa driver hanya dapat menulis buffer 32-bit atau 16-bit yang lebih rendah dan membiarkan bit dengan urutan lebih tinggi tidak berubah.
Jika DiagInfoPtr adalah NULL, StringLengthPtr masih akan mengembalikan jumlah total byte (tidak termasuk karakter penghentian null untuk data karakter) yang tersedia untuk dikembalikan dalam buffer yang diacu oleh DiagInfoPtr.
BufferLength
[Input] Jika DiagIdentifier adalah diagnostik yang ditentukan ODBC dan DiagInfoPtr menunjuk ke string karakter atau buffer biner, argumen ini harus panjang *DiagInfoPtr. Jika DiagIdentifier adalah bidang yang ditentukan ODBC dan *DiagInfoPtr adalah bilangan bulat, BufferLength diabaikan. Jika nilai dalam *DiagInfoPtr adalah string Unicode (saat memanggil SQLGetDiagFieldW), argumen BufferLength harus berupa angka genap.
Jika DiagIdentifier adalah bidang yang ditentukan driver, aplikasi menunjukkan sifat bidang ke Manajer Driver dengan mengatur argumen BufferLength. BufferLength dapat memiliki nilai berikut:
Jika DiagInfoPtr adalah penunjuk ke string karakter, BufferLength adalah panjang string atau SQL_NTS.
Jika DiagInfoPtr adalah penunjuk ke buffer biner, aplikasi menempatkan hasil makro SQL_LEN_BINARY_ATTR ( panjang) di BufferLength. Ini menempatkan nilai negatif dalam BufferLength.
Jika DiagInfoPtr adalah penunjuk ke nilai selain string karakter atau string biner, BufferLength harus memiliki nilai SQL_IS_POINTER.
Jika *DiagInfoPtr berisi jenis data dengan panjang tetap, BufferLength SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT, atau SQL_IS_USMALLINT, sebagaimana mewajibkan.
[Output] Penunjuk ke buffer untuk mengembalikan jumlah total byte (tidak termasuk jumlah byte yang diperlukan untuk karakter penghentian null) yang tersedia untuk dikembalikan dalam *DiagInfoPtr, untuk data karakter. Jika jumlah byte yang tersedia untuk dikembalikan lebih besar dari atau sama dengan
Kembali
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE, atau SQL_NO_DATA.
Diagnostik
SQLGetDiagField tidak memposting rekaman diagnostik untuk dirinya sendiri. Ini menggunakan nilai pengembalian berikut untuk melaporkan hasil eksekusinya sendiri:
SQL_SUCCESS: Fungsi berhasil mengembalikan informasi diagnostik.
SQL_SUCCESS_WITH_INFO: *DiagInfoPtr terlalu kecil untuk menahan bidang diagnostik yang diminta. Oleh karena itu, data di bidang diagnostik dipotong. Untuk menentukan bahwa pemotongan terjadi, aplikasi harus membandingkan BufferLength dengan jumlah byte aktual yang tersedia, yang ditulis ke *StringLengthPtr.
SQL_INVALID_HANDLE: Handel yang ditunjukkan oleh HandleType dan Handle bukan handel yang valid.
SQL_ERROR: Salah satu hal berikut ini terjadi:
argumen DiagIdentifier bukan salah satu nilai yang valid.
argumen DiagIdentifier SQL_DIAG_CURSOR_ROW_COUNT, SQL_DIAG_DYNAMIC_FUNCTION, SQL_DIAG_DYNAMIC_FUNCTION_CODE, atau SQL_DIAG_ROW_COUNT, tetapi Handle bukan handel pernyataan. (Manajer Driver mengembalikan diagnostik ini.)
argumen RecNumber negatif atau 0 saat DiagIdentifier menunjukkan bidang dari rekaman diagnostik. RecNumber diabaikan untuk bidang header.
Nilai yang diminta adalah string karakter dan BufferLength kurang dari nol.
Saat menggunakan pemberitahuan asinkron, operasi asinkron pada handel tidak selesai.
SQL_NO_DATA:
RecNumber lebih besar dari jumlah rekaman diagnostik yang ada untuk handel yang ditentukan dalamHandle. Fungsi ini juga mengembalikan SQL_NO_DATA untuk RecNumberpositif jika tidak ada rekaman diagnostik untuk Handle .
Komentar
Aplikasi biasanya memanggil
Untuk mendapatkan informasi kesalahan atau peringatan tertentu saat panggilan fungsi telah mengembalikan SQL_ERROR atau SQL_SUCCESS_WITH_INFO (atau SQL_NEED_DATA untuk fungsi
SQLBrowseConnect). Untuk menentukan jumlah baris di sumber data yang terpengaruh saat menyisipkan, operasi hapus, atau perbarui dilakukan dengan panggilan ke SQLExecute, SQLExecDirect, SQLBulkOperations, atau SQLSetPos (dari bidang header SQL_DIAG_ROW_COUNT), atau untuk menentukan jumlah baris yang ada di kursor terbuka saat ini, jika driver dapat memberikan informasi ini (dari bidang header SQL_DIAG_CURSOR_ROW_COUNT).
Untuk menentukan fungsi mana yang dijalankan oleh panggilan ke SQLExecDirect atau SQLExecute (dari bidang header SQL_DIAG_DYNAMIC_FUNCTION dan SQL_DIAG_DYNAMIC_FUNCTION_CODE).
Setiap fungsi ODBC dapat memposting nol atau lebih rekaman diagnostik setiap kali dipanggil, sehingga aplikasi dapat memanggil SQLGetDiagField setelah panggilan fungsi ODBC apa pun. Tidak ada batasan jumlah rekaman diagnostik yang dapat disimpan kapan saja.
Aplikasi dapat memindai semua rekaman diagnostik dengan menaikkan RecNumber, selama SQLGetDiagField mengembalikan SQL_SUCCESS. Jumlah rekaman status ditunjukkan di bidang header SQL_DIAG_NUMBER. Panggilan ke SQLGetDiagField tidak merusak bidang header dan rekaman. Aplikasi dapat memanggil SQLGetDiagField lagi nanti untuk mengambil bidang dari rekaman, selama fungsi selain fungsi diagnostik belum dipanggil di sementara, yang akan memposting rekaman pada handel yang sama.
Aplikasi dapat memanggil SQLGetDiagField untuk mengembalikan bidang diagnostik apa pun kapan saja, kecuali untuk SQL_DIAG_CURSOR_ROW_COUNT atau SQL_DIAG_ROW_COUNT, yang akan mengembalikan SQL_ERROR jika Handle bukan handel pernyataan. Jika ada bidang diagnostik lain yang tidak terdefinisi, panggilan ke SQLGetDiagField akan mengembalikan SQL_SUCCESS (asalkan tidak ada diagnostik lain yang ditemui) dan nilai yang tidak ditentukan dikembalikan untuk bidang tersebut.
Untuk informasi selengkapnya, lihat Menggunakan SQLGetDiagRec dan SQLGetDiagField dan Menerapkan SQLGetDiagRec dan SQLGetDiagField.
Memanggil API selain API yang sedang dijalankan secara asinkron akan menghasilkan HY010 "Kesalahan urutan fungsi". Namun, catatan kesalahan tidak dapat diambil sebelum operasi asinkron selesai.
Argumen HandleType
Setiap jenis handel dapat memiliki informasi diagnostik yang terkait dengannya. Argumen HandleType
Beberapa bidang header dan rekaman tidak dapat dikembalikan untuk pegangan lingkungan, koneksi, pernyataan, dan deskriptor. Handel yang bidangnya tidak berlaku ditunjukkan di bagian "Bidang Header" dan "Bidang Rekaman" berikut ini.
Jika HandleType SQL_HANDLE_ENV, Handle dapat menjadi handel lingkungan bersama atau tidak dibagikan.
Tidak ada bidang diagnostik header khusus driver yang harus dikaitkan dengan handel lingkungan.
Satu-satunya bidang header diagnostik yang ditentukan untuk handel deskriptor adalah SQL_DIAG_NUMBER dan SQL_DIAG_RETURNCODE.
Argumen DiagIdentifier
Argumen ini menunjukkan pengidentifikasi bidang yang diperlukan dari struktur data diagnostik. Jika RecNumber lebih besar dari atau sama dengan 1, data di bidang menjelaskan informasi diagnostik yang dikembalikan oleh fungsi. Jika RecNumber adalah 0, bidang berada di header struktur data diagnostik dan oleh karena itu berisi data yang berkaitan dengan panggilan fungsi yang mengembalikan informasi diagnostik, bukan ke informasi tertentu.
Driver dapat menentukan bidang header dan rekaman khusus driver dalam struktur data diagnostik.
Aplikasi ODBC 3*.x* yang bekerja dengan driver ODBC 2*.x* akan dapat memanggil SQLGetDiagField hanya dengan argumen DiagIdentifier argumen SQL_DIAG_CLASS_ORIGIN, SQL_DIAG_CLASS_SUBCLASS_ORIGIN, SQL_DIAG_CONNECTION_NAME, SQL_DIAG_MESSAGE_TEXT, SQL_DIAG_NATIVE, SQL_DIAG_NUMBER, SQL_DIAG_RETURNCODE, SQL_DIAG_SERVER_NAME, atau SQL_DIAG_SQLSTATE. Semua bidang diagnostik lainnya akan mengembalikan SQL_ERROR.
Bidang Header
Bidang header yang tercantum dalam tabel berikut ini dapat disertakan dalam argumen
| DiagIdentifier | Jenis pengembalian | Kembali |
|---|---|---|
| SQL_DIAG_CURSOR_ROW_COUNT | SQLLEN | Bidang ini berisi jumlah baris dalam kursor. Semantiknya bergantung pada SQLGetInfo jenis informasi SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2, dan SQL_STATIC_CURSOR_ATTRIBUTES2, yang menunjukkan jumlah baris mana yang tersedia untuk setiap jenis kursor (dalam bit SQL_CA2_CRC_EXACT dan SQL_CA2_CRC_APPROXIMATE). Konten bidang ini hanya ditentukan untuk handel pernyataan dan hanya setelah SQLExecute, SQLExecDirect, atau SQLMoreResults telah dipanggil. Memanggil |
| SQL_DIAG_DYNAMIC_FUNCTION | SQLCHAR * | Ini adalah string yang menjelaskan pernyataan SQL bahwa fungsi yang mendasar dijalankan. (Lihat "Nilai bidang Fungsi Dinamis," nanti di bagian ini, untuk nilai tertentu.) Konten bidang ini hanya ditentukan untuk handel pernyataan dan hanya setelah panggilan ke SQLExecute, SQLExecDirect, atau SQLMoreResults. Memanggil SQLGetDiagField dengan DiagIdentifier SQL_DIAG_DYNAMIC_FUNCTION selain handel pernyataan akan mengembalikan SQL_ERROR. Nilai bidang ini tidak terdefinisi sebelum panggilan ke SQLExecute atau SQLExecDirect. |
| SQL_DIAG_DYNAMIC_FUNCTION_CODE | SQLINTEGER | Ini adalah kode numerik yang menjelaskan pernyataan SQL yang dijalankan oleh fungsi yang mendasar. (Lihat "Nilai Bidang Fungsi Dinamis," nanti di bagian ini, untuk nilai tertentu.) Konten bidang ini hanya ditentukan untuk handel pernyataan dan hanya setelah panggilan ke SQLExecute, SQLExecDirect, atau SQLMoreResults. Memanggil |
| SQL_DIAG_NUMBER | SQLINTEGER | Jumlah rekaman status yang tersedia untuk handel yang ditentukan. |
| SQL_DIAG_RETURNCODE | SQLRETURN | Mengembalikan kode yang dikembalikan oleh fungsi . Untuk daftar kode pengembalian, lihat Mengembalikan Kode. Driver tidak harus menerapkan SQL_DIAG_RETURNCODE; selalu diimplementasikan oleh Driver Manager. Jika belum ada fungsi yang dipanggil padaHandle |
| SQL_DIAG_ROW_COUNT | SQLLEN | Jumlah baris yang dipengaruhi oleh sisipan, penghapusan, atau pembaruan yang dilakukan oleh SQLExecute, SQLExecDirect, SQLBulkOperations, atau SQLSetPos. Ini ditentukan driver setelah spesifikasi kursor telah dijalankan. Isi bidang ini didefinisikan hanya untuk handel pernyataan. Memanggil SQLGetDiagField dengan DiagIdentifier SQL_DIAG_ROW_COUNT selain handel pernyataan akan mengembalikan SQL_ERROR. Data di bidang ini juga dikembalikan dalam argumen RowCountPtrSQLRowCount. Data di bidang ini diatur ulang setelah setiap panggilan fungsi nondiagnostik, sedangkan jumlah baris yang dikembalikan oleh SQLRowCount tetap sama sampai pernyataan diatur kembali ke status yang disiapkan atau dialokasikan. |
Bidang Rekaman
Bidang rekaman yang tercantum dalam tabel berikut ini bisa disertakan dalam argumen
| DiagIdentifier | Jenis pengembalian | Kembali |
|---|---|---|
| SQL_DIAG_CLASS_ORIGIN | SQLCHAR * | String yang menunjukkan dokumen yang menentukan bagian kelas dari nilai SQLSTATE dalam rekaman ini. Nilainya adalah "ISO 9075" untuk semua SQLSTATEs yang ditentukan oleh antarmuka tingkat panggilan Open Group dan ISO. Untuk SQLSTATEs khusus ODBC (semua yang kelas SQLSTATE-nya adalah "IM"), nilainya adalah "ODBC 3.0". |
| SQL_DIAG_COLUMN_NUMBER | SQLINTEGER | Jika bidang SQL_DIAG_ROW_NUMBER adalah nomor baris yang valid dalam set baris atau sekumpulan parameter, bidang ini berisi nilai yang mewakili nomor kolom dalam tataan hasil atau nomor parameter dalam kumpulan parameter. Nomor kolom tataan hasil selalu dimulai pada 1; jika rekaman status ini berkaitan dengan kolom bookmark, bidang bisa nol. Nomor parameter dimulai dari 1. Ini memiliki nilai SQL_NO_COLUMN_NUMBER jika rekaman status tidak terkait dengan nomor kolom atau nomor parameter. Jika driver tidak dapat menentukan nomor kolom atau nomor parameter yang terkait dengan rekaman ini, bidang ini memiliki nilai SQL_COLUMN_NUMBER_UNKNOWN. Isi bidang ini didefinisikan hanya untuk handel pernyataan. |
| SQL_DIAG_CONNECTION_NAME | SQLCHAR * | String yang menunjukkan nama koneksi yang terkait dengan rekaman diagnostik. Bidang ini ditentukan driver. Untuk struktur data diagnostik yang terkait dengan handel lingkungan dan untuk diagnostik yang tidak terkait dengan koneksi apa pun, bidang ini adalah string panjang nol. |
| SQL_DIAG_MESSAGE_TEXT | SQLCHAR * | Pesan informasi tentang kesalahan atau peringatan. Bidang ini diformat seperti yang dijelaskan dalam Pesan Diagnostik. Tidak ada panjang maksimum untuk teks pesan diagnostik. |
| SQL_DIAG_NATIVE | SQLINTEGER | Kode kesalahan asli khusus sumber driver/data. Jika tidak ada kode kesalahan asli, driver mengembalikan 0. |
| SQL_DIAG_ROW_NUMBER | SQLLEN | Bidang ini berisi nomor baris dalam set baris, atau nomor parameter dalam kumpulan parameter, dengan rekaman status yang terkait. Nomor baris dan nomor parameter dimulai dengan 1. Bidang ini memiliki nilai SQL_NO_ROW_NUMBER jika rekaman status ini tidak terkait dengan nomor baris atau nomor parameter. Jika driver tidak dapat menentukan nomor baris atau nomor parameter yang terkait dengan rekaman ini, bidang ini memiliki nilai SQL_ROW_NUMBER_UNKNOWN. Isi bidang ini didefinisikan hanya untuk handel pernyataan. |
| SQL_DIAG_SERVER_NAME | SQLCHAR * | String yang menunjukkan nama server yang terkait dengan catatan diagnostik. Ini sama dengan nilai yang dikembalikan untuk panggilan ke SQLGetInfo dengan opsi SQL_DATA_SOURCE_NAME. Untuk struktur data diagnostik yang terkait dengan handel lingkungan dan untuk diagnostik yang tidak terkait dengan server apa pun, bidang ini adalah string panjang nol. |
| SQL_DIAG_SQLSTATE | SQLCHAR * | Kode diagnostik SQLSTATE lima karakter. Untuk informasi selengkapnya, lihat SQLSTATEs. |
| SQL_DIAG_SUBCLASS_ORIGIN | SQLCHAR * | String dengan format dan nilai yang valid yang sama dengan SQL_DIAG_CLASS_ORIGIN, yang mengidentifikasi bagian yang menentukan bagian subkelas dari kode SQLSTATE. SQLSTATES khusus ODBC yang "ODBC 3.0" dikembalikan meliputi yang berikut ini: 01S00, 01S01, 01S02, 01S06, 01S07, 07S01, 08S01, 21S01, 21S02, 25S01, 25S02, 25S03, 42S01, 42S02, 42S11, 42S12, 42S21, 42S22, HY095, HY097, HY098, HY099, HY100, HY101, HY105, HY107, HY109, HY110, HY111, HYT00, HYT01, IM001, IM002, IM003, IM004, IM005, IM006, IM007, IM008, IM010, IM011, IM012. |
Nilai Bidang Fungsi Dinamis
Tabel berikut menjelaskan nilai SQL_DIAG_DYNAMIC_FUNCTION dan SQL_DIAG_DYNAMIC_FUNCTION_CODE yang berlaku untuk setiap jenis pernyataan SQL yang dijalankan oleh panggilan ke SQLExecute atau SQLExecDirect. Driver dapat menambahkan nilai yang ditentukan driver ke yang tercantum.
| Pernyataan SQL Dijalankan |
Nilai dari SQL_DIAG_DYNAMIC_FUNCTION |
Nilai dari SQL_DIAG_DYNAMIC_FUNCTION_CODE |
|---|---|---|
| alter-domain-statement | "UBAH DOMAIN" | SQL_DIAG_ALTER_DOMAIN |
| alter-table-statement | "ALTER TABLE" | SQL_DIAG_ALTER_TABLE |
| definisi pernyataan |
"CREATE ASSERTION" | SQL_DIAG_CREATE_ASSERTION |
| definisi set karakter | "BUAT SET KARAKTER" | SQL_DIAG_CREATE_CHARACTER_SET |
| definisi kolajek |
"CREATE COLLATION" | SQL_DIAG_CREATE_COLLATION |
| definisi domain |
"BUAT DOMAIN" | SQL_DIAG_CREATE_DOMAIN |
| create-index-statement | "BUAT INDEKS" | SQL_DIAG_CREATE_INDEX |
| create-table-statement | "CREATE TABLE" | SQL_DIAG_CREATE_TABLE |
| create-view-statement | "BUAT TAMPILAN" | SQL_DIAG_CREATE_VIEW |
| spesifikasi kursor |
"PILIH KURSOR" | SQL_DIAG_SELECT_CURSOR |
| yang diposisikan pernyataan penghapusan | "KURSOR PENGHAPUSAN DINAMIS" | SQL_DIAG_DYNAMIC_DELETE_CURSOR |
| |
"HAPUS DI MANA" | SQL_DIAG_DELETE_WHERE |
| pernyataan drop-assertion | "HILANGKAN PERNYATAAN" | SQL_DIAG_DROP_ASSERTION |
| drop-character-set-stmt | "HILANGKAN SET KARAKTER" | SQL_DIAG_DROP_CHARACTER_SET |
| |
"DROP COLLATION" | SQL_DIAG_DROP_COLLATION |
| pernyataan drop-domain | "DROP DOMAIN" | SQL_DIAG_DROP_DOMAIN |
| |
"HILANGKAN INDEKS" | SQL_DIAG_DROP_INDEX |
| "HILANGKAN SKEMA" | SQL_DIAG_DROP_SCHEMA | |
| |
"DROP TABLE" | SQL_DIAG_DROP_TABLE |
| |
"JATUHKAN TERJEMAHAN" | SQL_DIAG_DROP_TRANSLATION |
| pernyataan drop-view |
"DROP VIEW" | SQL_DIAG_DROP_VIEW |
| "GRANT" | SQL_DIAG_GRANT | |
| pernyataan penyisipan |
"INSERT" | SQL_DIAG_INSERT |
| ekstensi prosedur ODBC | "PANGGIL" | panggilan SQL_DIAG_ |
| pernyataan pencabutan |
"CABUT" | SQL_DIAG_REVOKE |
| definisi skema |
"CREATE SCHEMA" | SQL_DIAG_CREATE_SCHEMA |
| definisi terjemahan |
"BUAT TERJEMAHAN" | SQL_DIAG_CREATE_TRANSLATION |
| yang diposisikan pernyataan pembaruan | "KURSOR PEMBARUAN DINAMIS" | SQL_DIAG_DYNAMIC_UPDATE_CURSOR |
| update-statement-searched | "PERBARUI DI MANA" | SQL_DIAG_UPDATE_WHERE |
| Diketahui | string kosong | SQL_DIAG_UNKNOWN_STATEMENT |
Urutan Rekaman Status
Rekaman status diposisikan dalam urutan berdasarkan nomor baris dan jenis diagnostik. Driver Manager menentukan urutan akhir untuk mengembalikan rekaman status yang dihasilkannya. Driver menentukan urutan akhir untuk mengembalikan rekaman status yang dihasilkannya.
Jika catatan diagnostik diposting oleh Driver Manager dan driver, Driver Manager bertanggung jawab untuk memesannya.
Jika ada dua rekaman status atau lebih, urutan rekaman ditentukan terlebih dahulu menurut nomor baris. Aturan berikut berlaku untuk menentukan urutan rekaman diagnostik menurut baris:
Rekaman yang tidak sesuai dengan baris apa pun muncul di depan rekaman yang sesuai dengan baris tertentu, karena SQL_NO_ROW_NUMBER didefinisikan menjadi -1.
Rekaman yang nomor barisnya tidak diketahui muncul di depan semua rekaman lainnya, karena SQL_ROW_NUMBER_UNKNOWN didefinisikan menjadi -2.
Untuk semua rekaman yang berkaitan dengan baris tertentu, rekaman diurutkan menurut nilai di bidang SQL_DIAG_ROW_NUMBER. Semua kesalahan dan peringatan baris pertama yang terpengaruh tercantum, lalu semua kesalahan dan peringatan baris berikutnya yang terpengaruh, dan sebagainya.
Nota
Manajer Driver ODBC 3*.x* tidak memesan rekaman status dalam antrean diagnostik jika SQLSTATE 01S01 (Kesalahan berturut-turut) dikembalikan oleh driver ODBC 2*.x* atau jika SQLSTATE 01S01 (Kesalahan berturut-turut) dikembalikan oleh driver ODBC 2*.x* atau jika SQLSTATE 01S01 (Kesalahan berturut-turut) dikembalikan oleh driver ODBC 3*.x* ketika SQLExtendedFetch dipanggil atau SQLSetPos dipanggil pada kursor yang telah diposisikan dengan SQLExtendedFetch.
Dalam setiap baris, atau untuk semua rekaman yang tidak sesuai dengan baris atau di mana nomor baris tidak diketahui, atau untuk semua rekaman tersebut dengan nomor baris sama dengan SQL_NO_ROW_NUMBER, rekaman pertama yang tercantum ditentukan dengan menggunakan sekumpulan aturan pengurutan. Setelah rekaman pertama, urutan rekaman lain yang memengaruhi baris tidak ditentukan. Aplikasi tidak dapat mengasumsikan bahwa kesalahan mendahului peringatan setelah rekaman pertama. Aplikasi harus memindai struktur data diagnostik lengkap untuk mendapatkan informasi lengkap tentang panggilan yang tidak berhasil ke fungsi.
Aturan berikut digunakan untuk menentukan rekaman pertama dalam baris. Rekor dengan peringkat tertinggi adalah rekor pertama. Sumber rekaman (Manajer Driver, driver, gateway, dan sebagainya) tidak dipertimbangkan saat memberi peringkat rekaman.
Kesalahan rekaman Status yang menjelaskan kesalahan memiliki peringkat tertinggi. Aturan berikut diterapkan untuk mengurutkan kesalahan:
Catatan yang menunjukkan kegagalan transaksi atau kemungkinan kegagalan transaksi mengungguli semua catatan lainnya.
Jika dua rekaman atau lebih menjelaskan kondisi kesalahan yang sama, maka SQLSTATEs yang ditentukan oleh spesifikasi Open Group CLI (kelas 03 hingga HZ) mengungguli ODBC- dan SQLSTATEs yang ditentukan driver.
data Tanpa Nilai Data Status yang ditentukan implementasi yang menjelaskan nilai Tanpa Data yang ditentukan driver (kelas 02) memiliki peringkat tertinggi kedua.
Catatan Status Peringatan yang menjelaskan peringatan (kelas 01) memiliki peringkat terendah. Jika dua catatan atau lebih menjelaskan kondisi peringatan yang sama, maka peringatan SQLSTATEs yang ditentukan oleh spesifikasi Open Group CLI mengungguli SQLSTATEs yang ditentukan ODBC dan yang ditentukan driver.
Fungsi Terkait
| Untuk informasi tentang | Lihat |
|---|---|
| Mendapatkan beberapa bidang struktur data diagnostik | Fungsi SQLGetDiagRec |
Lihat Juga
Referensi API ODBC