Bagikan melalui


Hasil Pemrosesan (ODBC)

Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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 tataan hasil. Untuk pernyataan ini, kode pengembalian dari SQLExecute atau SQLExecDirect biasanya satu-satunya indikasi pernyataan berhasil.

Setiap pernyataan INSERT, 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 prosedur batch atau tersimpan yang berisi beberapa pernyataan INSERT, UPDATE, atau DELETE, hasil yang ditetapkan dari setiap pernyataan modifikasi harus diproses menggunakan SQLRowCount atau dibatalkan menggunakan SQLMoreResults. Jumlah ini dapat dibatalkan dengan menyertakan pernyataan SET NOCOUNT ON dalam batch atau prosedur tersimpan.

Transact-SQL menyertakan pernyataan SET NOCOUNT. Ketika opsi NOCOUNT diatur pada, SQL Server tidak mengembalikan jumlah baris yang terpengaruh oleh pernyataan dan SQLRowCount mengembalikan 0. Versi driver ODBC SQL Server Native Client memperkenalkan opsi SQLGetStmtAttr khusus driver, SQL_SOPT_SS_NOCOUNT_STATUS, untuk melaporkan apakah opsi NOCOUNT aktif 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 NOCOUNT nonaktif dan nilai 0 dari SQLRowCount menunjukkan bahwa pernyataan 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 pernyataan SET NOCOUNT sehingga programmer tidak dapat mengasumsikan 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

  • SET SHOWPLAN (tersedia dengan versi SQL Server yang lebih lama)

  • MENGATUR STATISTIK

  • 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

SQL Server Native Client (ODBC)
Topik Cara Pemrosesan Hasil (ODBC)