Using Cursors (ODBC)
SQL Server Native Client (SNAC) is not supported beyond SQL Server 2012. Avoid using SNAC in new development work, and plan to modify applications that currently use it. The Microsoft ODBC Driver for SQL Server provides native connectivity from Windows to Microsoft SQL Server and Microsoft Azure SQL Database.
ODBC supports a cursor model that allows:
Several types of cursors.
Scrolling and positioning within a cursor.
Several concurrency options.
ODBC applications rarely declare and open cursors or use any cursor-related Transact-SQL statements. ODBC automatically opens a cursor for every result set returned from an SQL statement. The characteristics of the cursors are controlled by statement attributes set with SQLSetStmtAttr before the SQL statement is executed. The ODBC API functions for processing result sets support the full range of cursor functionality, including fetching, scrolling, and positioned updates.
This is a comparison of how Transact-SQL scripts and ODBC applications work with cursors.
|Define cursor behavior||Specify through DECLARE CURSOR parameters||Set cursor attributes by using SQLSetStmtAttr|
|Open a cursor||DECLARE CURSOR OPEN cursor_name||SQLExecDirect or SQLExecute|
|Fetch rows||FETCH||SQLFetch or SQLFetchScroll|
|Positioned update||WHERE CURRENT OF clause on UPDATE or DELETE||SQLSetPos|
|Close a cursor||CLOSE cursor_name DEALLOCATE||SQLCloseCursor|
The server cursors implemented in SQL Server support the functionality of the ODBC cursor model. The SQL Server Native Client driver uses server cursors to support the cursor functionality of the ODBC API.