BUG: Cursor Fetch Within Stored Procedure Behavior InconsistentID: Q155220
|
When cursor is declared and fetched within stored procedure, "Fetch Cursor"
displays inconsistent behavior between DYNAMIC and SCROLLABLE cursors.
"FETCH NEXT FROM cursor INTO @variables" with DYNAMIC cursor results in the
"0 row(s) affected" message, while the SCROLLABLE cursor does not return
any message.
Because the default behavior for cursor has changed from "KEYSET DRIVEN (or
SCROLLABLE)" in SQL Server 6.0 to "DYNAMIC" in SQL Server 6.5, this appears
to users as stored procedure behavior changes from SQL Server 6.0 to SQL
Server 6.5.
NOTE: In DYNAMIC cursor, DONE_INPROC bit is not set when "FETCH" is
executed, therefore it always returns the 0 row count.
Create the cursor as "SCROLL CURSOR" or use "SET NOCOUNT ON" within the stored procedure, so that you do not receive the "0 row(s) affected" message.
Microsoft has confirmed this to be a problem in Microsoft SQL Server version 6.5. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
This problem may affect ODBC applications migrated from SQL Server 6.0 to
6.5. Each fetch against these dynamic cursors in stored procedures under
SQL Server 6.5 now returns a result set to an ODBC application consisting
of the message:
0 row(s) affected
szSqlState = "24000", pfNativeError = 0,
szErrorMsg="[Microsoft][ODBC SQL Server Driver]
Invalid cursor state"
Additional query words: cursor
Keywords : kbprg SSrvProg SSrvStProc kbbug6.50
Version : 6.5
Platform : WINDOWS
Issue type :
Last Reviewed: April 1, 1999