Bagikan melalui


Beberapa Hasil

Hasilnya adalah sesuatu yang dikembalikan oleh sumber data setelah pernyataan dijalankan. ODBC memiliki dua jenis hasil: tataan hasil dan jumlah baris. Jumlah baris adalah jumlah baris yang dipengaruhi oleh pernyataan pembaruan, penghapusan, atau penyisipan. Batch, yang dijelaskan dalam Batch Pernyataan SQL, dapat menghasilkan beberapa hasil.

Tabel berikut mencantumkan opsi SQLGetInfo yang digunakan aplikasi untuk menentukan apakah sumber data mengembalikan beberapa hasil untuk setiap jenis batch yang berbeda. Secara khusus, sumber data dapat mengembalikan jumlah baris tunggal untuk seluruh batch pernyataan atau jumlah baris individual untuk setiap pernyataan dalam batch. Dalam kasus pernyataan pembuatan set hasil yang dijalankan dengan array parameter, sumber data dapat mengembalikan satu hasil yang ditetapkan untuk semua set parameter atau kumpulan hasil individual untuk setiap set parameter.

Jenis batch Jumlah baris Tataan hasil
Batch eksplisit SQL_BATCH_ROW_COUNT --[b]
Prosedur SQL_BATCH_ROW_COUNT --[b]
Array parameter SQL_PARAM_ARRAYS_ROW_COUNTS SQL_PARAM_ARRAYS_SELECTS

[a] Pernyataan pembuatan jumlah baris dalam batch mungkin didukung, namun pengembalian jumlah baris tidak didukung. Opsi SQL_BATCH_SUPPORT di SQLGetInfo menunjukkan apakah pernyataan pembuatan jumlah baris diizinkan dalam batch; opsi SQL_BATCH_ROW_COUNTS menunjukkan apakah jumlah baris ini dikembalikan ke aplikasi.

[b] Batch dan prosedur eksplisit selalu mengembalikan beberapa tataan hasil saat menyertakan beberapa pernyataan pembuatan tataan hasil.

Catatan

Opsi SQL_MULT_RESULT_SETS yang diperkenalkan di ODBC 1.0 hanya menyediakan informasi umum tentang apakah beberapa kumpulan hasil dapat dikembalikan. Secara khusus, diatur ke "Y" jika bit SQL_BS_SELECT_EXPLICIT atau SQL_BS_SELECT_PROC dikembalikan untuk SQL_BATCH_SUPPORT atau jika SQL_PAS_BATCH dikembalikan untuk SQL_PARAM_ARRAYS_SELECT.

Untuk memproses beberapa hasil, aplikasi memanggil SQLMoreResults. Fungsi ini membuang hasil saat ini dan membuat hasil berikutnya tersedia. Ini mengembalikan SQL_NO_DATA ketika tidak ada lagi hasil yang tersedia. Misalnya, misalkan pernyataan berikut dijalankan sebagai batch:

SELECT * FROM Parts WHERE Price > 100.00;  
UPDATE Parts SET Price = 0.9 * Price WHERE Price > 100.00  

Setelah pernyataan ini dijalankan, aplikasi mengambil baris dari kumpulan hasil yang dibuat oleh pernyataan SELECT . Setelah selesai mengambil baris, ia memanggil SQLMoreResults untuk menyediakan jumlah bagian yang direprikasi. Jika perlu, SQLMoreResults membuang baris yang tidak diambil dan menutup kursor. Aplikasi kemudian memanggil SQLRowCount untuk menentukan berapa banyak bagian yang direprikasi oleh pernyataan UPDATE .

Ini khusus driver apakah seluruh pernyataan batch dijalankan sebelum hasil apa pun tersedia. Dalam beberapa implementasi, ini adalah kasus; di lain, memanggil SQLMoreResults memicu eksekusi pernyataan berikutnya dalam batch.

Jika salah satu pernyataan dalam batch gagal, SQLMoreResults akan mengembalikan SQL_ERROR atau SQL_SUCCESS_WITH_INFO. Jika batch dibatalkan ketika pernyataan gagal atau pernyataan yang gagal adalah pernyataan terakhir dalam batch, SQLMoreResults akan mengembalikan SQL_ERROR. Jika batch tidak dibatalkan ketika pernyataan gagal dan pernyataan yang gagal bukan pernyataan terakhir dalam batch, SQLMoreResults akan mengembalikan SQL_SUCCESS_WITH_INFO. SQL_SUCCESS_WITH_INFO menunjukkan bahwa setidaknya satu kumpulan hasil atau jumlah dihasilkan dan bahwa batch tidak dibatalkan.