虽然我有记录,但光标无法正常工作

时间:2015-07-23 06:30:40

标签: sql sql-server-2008 cursor

我在sql中有以下光标:

DECLARE cur_saveRate CURSOR
FOR 
SELECT UtilityName,SuggestedRate,Client,State,CurrentRate,AccNo,Savings from #tempXML


print '1'

OPEN cur_saveRate 



IF @@CURSOR_ROWS > 0
BEGIN 

 FETCH NEXT FROM cur_saveRate INTO @UTILITY_NAME,@SUG_RATE,@CLIENT_NAME,@CLIENT_STATE,@CURRENT_RATE,@ACCOUNT_NUMBER,@SAVINGS

 WHILE @@Fetch_status = 0
 BEGIN

..........
.........

END
FETCH NEXT FROM cur_saveRate INTO @UTILITY_NAME,@SUG_RATE,@CLIENT_NAME,@CLIENT_STATE,@CURRENT_RATE,@ACCOUNT_NUMBER,@SAVINGS

END

CLOSE cur_saveRate
DEALLOCATE cur_saveRate

不幸的是它没有进入游标。

我试图打印一些'在不同的地方,它没有进入光标。

我已确保记录存在于#tempXML

请帮帮我。

1 个答案:

答案 0 :(得分:1)

这很可能是因为条件IF @@CURSOR_ROWS > 0

根据BOL @@CURSOR_ROWS less than 0表示

  

如果最后一个光标是异步打开的,@@ CURSOR_ROWS返回的数字是负数。如果sp_configure cursor threshold的值大于0且游标结果集中的行数大于游标阈值,则会异步打开键集驱动程序或静态游标。

MSDN参考文献是here

尝试摆脱这种情况并运行光标。