[英]SQL server management studio 2014 setting only returns whole numbers
[英]SQL Server: cursor only returns records first time when running in Management Studio
我希望有人可以提供幫助! 我正在嘗試編寫一個使用游標的存儲過程。 當我在Management Studio中進行測試時,該存儲過程僅在首次運行時返回記錄。 如果我復制/粘貼到另一個查詢窗口,它將僅在第一次時再次返回記錄。 從C#運行時,存儲過程將按預期工作。
下面的查詢演示了該問題。 提前致謝!
-------------------------------------------------------------------
-- Query to reproduce problem with using cursor - management studio
-------------------------------------------------------------------
--
Declare crsrTest Cursor For
Select TABLE_NAME
From INFORMATION_SCHEMA.TABLES;
Declare @TableName varchar(128);
Open crsrTest;
--
-- This will only return records the *first* time when running in MS.
-- Every time after that, I get the 'No records' message.
--
if @@FETCH_STATUS <> 0
Print 'No records';
while @@FETCH_STATUS = 0 begin
Fetch Next
From crsrTest
Into @TableName;
Print @TableName;
end;
Close crsrTest;
Deallocate crsrTest;
您缺少OPEN
和IF @@FETCH_STATUS <> 0
之間的FETCH NEXT
:
DECLARE crsrTest CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES;
DECLARE @TableName VARCHAR(128);
OPEN crsrTest;
FETCH NEXT FROM crsrTest INTO @TableName;
PRINT @TableName;
-- This will always return records
IF @@FETCH_STATUS <> 0
PRINT 'No records';
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM crsrTest INTO @TableName;
PRINT @TableName;
END;
CLOSE crsrTest;
DEALLOCATE crsrTest;
如果可以的話,請遠離游標(您似乎對它們不熟悉,這就是我要告訴的原因)。 如果您是ORACLE的家伙,那不如PL / SQL中的迭代那么快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.