Hasil Pemrosesan (ODBC)

Berlaku untuk:SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics AnalyticsPlatform System (PDW)

Setelah aplikasi mengirimkan pernyataan SQL, SQL Server mengembalikan data yang dihasilkan sebagai satu atau beberapa tataan hasil. Kumpulan hasil adalah sekumpulan baris dan kolom yang cocok dengan kriteria kueri. Pernyataan SELECT, fungsi katalog, dan beberapa prosedur tersimpan menghasilkan tataan hasil yang tersedia untuk aplikasi dalam bentuk tabular. Jika pernyataan SQL yang dijalankan adalah prosedur tersimpan, batch yang berisi beberapa perintah, atau pernyataan SELECT yang berisi kata kunci, akan ada beberapa kumpulan hasil yang akan diproses.

Fungsi katalog ODBC juga dapat mengambil data. Misalnya, SQLColumns mengambil data tentang kolom di sumber data. Kumpulan hasil ini dapat berisi nol atau lebih baris.

Pernyataan SQL lainnya, seperti GRANT atau REVOKE, tidak mengembalikan kumpulan hasil. Untuk pernyataan ini, kode pengembalian dari SQLExecute atau SQLExecDirect biasanya satu-satunya indikasi pernyataan berhasil.

Setiap INSERTpernyataan , UPDATE, dan DELETE mengembalikan kumpulan hasil yang hanya berisi jumlah baris yang terpengaruh oleh modifikasi. Jumlah ini tersedia saat aplikasi memanggil SQLRowCount. ODBC 3.aplikasi x harus memanggil SQLRowCount untuk mengambil kumpulan hasil atau SQLMoreResults untuk membatalkannya. Saat aplikasi menjalankan batch atau prosedur tersimpan yang berisi beberapa INSERT, UPDATE, atau DELETE pernyataan, kumpulan hasil dari setiap pernyataan modifikasi harus diproses menggunakan SQLRowCount atau dibatalkan menggunakan SQLMoreResults. Penghitungan ini dapat dibatalkan dengan menyertakan SET NOCOUNT pernyataan ON dalam batch atau prosedur tersimpan.

Transact-SQL termasuk SET NOCOUNT pernyataan. Saat NOCOUNT opsi diaktifkan, SQL Server tidak mengembalikan jumlah baris yang terpengaruh oleh pernyataan dan SQLRowCount mengembalikan 0. Versi driver ODBC Klien Asli SQL Server memperkenalkan opsi SQLGetStmtAttr khusus driver, SQL_SOPT_SS_NOCOUNT_STATUS, untuk melaporkan apakah opsi aktif NOCOUNT atau nonaktif. Setiap kali SQLRowCount mengembalikan 0, aplikasi harus menguji SQL_SOPT_SS_NOCOUNT_STATUS. Jika SQL_NC_ON dikembalikan, nilai 0 dari SQLRowCount hanya menunjukkan bahwa SQL Server belum mengembalikan jumlah baris. Jika SQL_NC_OFF dikembalikan, itu berarti itu NOCOUNT nonaktif dan nilai 0 dari SQLRowCount menunjukkan bahwa pernyataan tersebut tidak memengaruhi baris apa pun. Aplikasi tidak boleh menampilkan nilai SQLRowCount saat SQL_SOPT_SS_NOCOUNT_STATUS SQL_NC_OFF. Batch besar atau prosedur tersimpan mungkin berisi beberapa SET NOCOUNT pernyataan sehingga pemrogram tidak dapat berasumsi SQL_SOPT_SS_NOCOUNT_STATUS tetap konstan. Opsi harus diuji setiap kali SQLRowCount mengembalikan 0.

Beberapa pernyataan Transact-SQL lainnya mengembalikan data mereka dalam pesan daripada tataan hasil. Ketika driver ODBC SQL Server Native Client menerima pesan-pesan ini, ia mengembalikan SQL_SUCCESS_WITH_INFO untuk memberi tahu aplikasi bahwa pesan informasi tersedia. Aplikasi kemudian dapat memanggil SQLGetDiagRec untuk mengambil pesan-pesan ini. Pernyataan Transact-SQL yang berfungsi dengan cara ini adalah:

  • DBCC

  • SETSHOWPLAN (tersedia dengan versi SQL Server sebelumnya)

  • SET STATISTICS

  • CETAK

  • RAISERROR

Driver ODBC Klien Asli SQL Server mengembalikan SQL_ERROR pada RAISERROR dengan tingkat keparahan 11 atau lebih tinggi. Jika tingkat keparahan RAISERROR adalah 19 atau lebih tinggi, koneksi juga akan terputus.

Untuk memproses kumpulan hasil dari pernyataan SQL, aplikasi:

  • Menentukan karakteristik kumpulan hasil.

  • Mengikat kolom ke variabel program.

  • Mengambil nilai tunggal, seluruh baris nilai, atau beberapa baris nilai.

  • Pengujian untuk melihat apakah ada lebih banyak tataan hasil, dan jika demikian, perulangan kembali untuk menentukan karakteristik tataan hasil baru.

Proses pengambilan baris dari sumber data dan mengembalikannya ke aplikasi disebut mengambil.

Di Bagian Ini

Lihat Juga

Klien Asli SQL Server (ODBC)
Topik Cara Pemrosesan Hasil (ODBC)