1

以下のコードを参照してください。

USE [Test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Test]
AS
BEGIN
begin tran
begin try
    SET NOCOUNT ON;
    DECLARE @ID int
    DECLARE @Count int
    set @Count=0
    DECLARE Employee_Cursor CURSOR FOR
SELECT id
FROM Person3;
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor INTO @ID
WHILE @@FETCH_STATUS = 0
   BEGIN    
        WAITFOR DELAY '000:00:01'
        SET @Count = @Count+1
        Print @Count        
      FETCH NEXT FROM Employee_Cursor INTO @ID;
   END;
   commit tran
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
end try
begin catch
ROLLBACK tran
end catch
END

ストアド プロシージャが実行され、次の出力が一度にクライアントにフラッシュされます (person3 に 3 つのレコードがあるため)。

1
2
3

カーソルの反復ごとに出力をクライアントにどのようにフラッシュしますか? SQL Server 2005 と互換性のある回答を探しています。

ここで説明されているように、RAISEERROR ステートメントを使用してみました: How do I flush the PRINT buffer in TSQL? 、ただし、すべてのステートメントは最後に表示されます。

4

1 に答える 1