Home All Groups Group Topic Archive Search About

HELP! "could not complete cursor operation because the set options have changed since the cursor was

Author
19 May 2006 8:32 PM
Stewart McGuire
I am declaring a dynamic generated cursor in a nvarchar string and passing
it to sp_executesql.  I then want to open it and loop over the results using
FETCH INTO.  This worked fine in SQL 2000.  In SQL 2005 I get the error
message that I put in the header.  It thinks that the SET OPTIONS have
changed between my trigger and the scope of the sp_executesql stored
procedure.  I can NOT find ANY documentation anywhere that tells me WHAT
options will cause this error so I can SET those options correctly in my
trigger so they match whatever is getting set in the sp_executesql.  I also
can not locate any documentation as to what OPTIONS are being set in the
sp_executesql stored procedure.  I have not set any options explicitly in my
trigger, nor have I set any options to anything other than the defaults at
the database level.

Can someone help me please?

--Stewart McGuire
  Malcolm  Pirnie, Inc.

P.S. I can't use a hard coded cursor because the column names and table name
can change and those parts of a sql statement can NOT be parameterized (as
far as I have been able to determine).

Author
21 May 2006 11:14 AM
John Bell
Hi

Are you explicitly using a GLOBAL cursor if not have you checked
CURSOR_DEFAULT? Check out
http://msdn2.microsoft.com/en-us/library/ms189238.aspx

Have you thought about using dynamic SQL to populate a temporary table and
then using a cursor on that?

John

Show quote
"Stewart McGuire" wrote:

> I am declaring a dynamic generated cursor in a nvarchar string and passing
> it to sp_executesql.  I then want to open it and loop over the results using
> FETCH INTO.  This worked fine in SQL 2000.  In SQL 2005 I get the error
> message that I put in the header.  It thinks that the SET OPTIONS have
> changed between my trigger and the scope of the sp_executesql stored
> procedure.  I can NOT find ANY documentation anywhere that tells me WHAT
> options will cause this error so I can SET those options correctly in my
> trigger so they match whatever is getting set in the sp_executesql.  I also
> can not locate any documentation as to what OPTIONS are being set in the
> sp_executesql stored procedure.  I have not set any options explicitly in my
> trigger, nor have I set any options to anything other than the defaults at
> the database level.
>
> Can someone help me please?
>
> --Stewart McGuire
>   Malcolm  Pirnie, Inc.
>
> P.S. I can't use a hard coded cursor because the column names and table name
> can change and those parts of a sql statement can NOT be parameterized (as
> far as I have been able to determine).
>
>
>
Author
22 May 2006 1:06 PM
Stewart McGuire
John,

Thanks for that link.  I was NOT using an explicit GLOBAL cursor.  Turns out
that I was not able to pass a cursor parameter back out of my sp_executesql
call.  It just did not like it.  I had thought about using a temporary table
but I was unclear about the LOCAL scope.  Turns out the LOCAL scope is not
just the currently executing trigger but the current connection/user so the
sp_executesql call has access to the temporary table that I declare in my
trigger.  Then I just created a static cursor and opened that.  Works like a
charm!

Thanks for your suggestions!

--Stewart

Show quote
"John Bell" <jbellnewspo***@hotmail.com> wrote in message
news:8FED7AF7-4DC9-494C-991E-1D47CAA9F107@microsoft.com...
> Hi
>
> Are you explicitly using a GLOBAL cursor if not have you checked
> CURSOR_DEFAULT? Check out
> http://msdn2.microsoft.com/en-us/library/ms189238.aspx
>
> Have you thought about using dynamic SQL to populate a temporary table and
> then using a cursor on that?
>
> John
>
> "Stewart McGuire" wrote:
>
>> I am declaring a dynamic generated cursor in a nvarchar string and
>> passing
>> it to sp_executesql.  I then want to open it and loop over the results
>> using
>> FETCH INTO.  This worked fine in SQL 2000.  In SQL 2005 I get the error
>> message that I put in the header.  It thinks that the SET OPTIONS have
>> changed between my trigger and the scope of the sp_executesql stored
>> procedure.  I can NOT find ANY documentation anywhere that tells me WHAT
>> options will cause this error so I can SET those options correctly in my
>> trigger so they match whatever is getting set in the sp_executesql.  I
>> also
>> can not locate any documentation as to what OPTIONS are being set in the
>> sp_executesql stored procedure.  I have not set any options explicitly in
>> my
>> trigger, nor have I set any options to anything other than the defaults
>> at
>> the database level.
>>
>> Can someone help me please?
>>
>> --Stewart McGuire
>>   Malcolm  Pirnie, Inc.
>>
>> P.S. I can't use a hard coded cursor because the column names and table
>> name
>> can change and those parts of a sql statement can NOT be parameterized
>> (as
>> far as I have been able to determine).
>>
>>
>>

AddThis Social Bookmark Button