Menggunakan Kumpulan Hasil Default SQL Server
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Atribut kursor ODBC default adalah:
SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_CONCURRENCY, SQL_CONCUR_READ_ONLY, SQL_IS_INTEGER);
SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_ARRAY_SIZE, 1, SQL_IS_INTEGER);
Setiap kali atribut ini diatur ke defaultnya, driver ODBC SQL Server Native Client menggunakan kumpulan hasil default SQL Server. Kumpulan hasil default dapat digunakan untuk pernyataan SQL apa pun yang didukung oleh SQL Server, dan merupakan metode paling efisien untuk mentransfer seluruh hasil yang diatur ke klien.
SQL Server 2005 (9.x) memperkenalkan dukungan untuk beberapa set hasil aktif (MARS); aplikasi sekarang dapat memiliki lebih dari satu tataan hasil default aktif per koneksi. MARS tidak diaktifkan secara default.
Sebelum SQL Server 2005 (9.x), kumpulan hasil default tidak mendukung beberapa pernyataan aktif pada koneksi yang sama. Setelah pernyataan SQL dijalankan pada koneksi, server tidak menerima perintah (kecuali permintaan untuk membatalkan sisa kumpulan hasil) dari klien pada koneksi tersebut sampai semua baris dalam tataan hasil telah diproses. Untuk membatalkan sisa kumpulan hasil yang diproses sebagian, panggil SQLCloseCursor atau SQLFreeStmt dengan parameter fOption yang diatur ke SQL_CLOSE. Untuk menyelesaikan kumpulan hasil yang diproses sebagian dan menguji keberadaan kumpulan hasil lain, panggil SQLMoreResults. Jika aplikasi ODBC mencoba perintah pada handel koneksi sebelum tataan hasil default telah sepenuhnya diproses, panggilan menghasilkan SQL_ERROR dan panggilan ke SQLGetDiagRec mengembalikan:
szSqlState: "HY000", pfNativeError: 0
szErrorMsg: "[Microsoft][SQL Server Native Client]
Connection is busy with results for another hstmt."