如何在存储过程运行时使用PRINT语句跟踪执行?

Sto*_*orm 21 t-sql sql-server

参考:SQL Server

我有一个带有while循环的存储过程,我想在每500个循环后打印一些消息.

所以,我写了 -

CREATE spxxx
AS
BEGIN
    BEGIN TRAN
        DECLARE @counter = 0;

        WHILE <somecondition>
            SET @counter = @counter + 1;

            IF @counter % 50 = 0
            BEGIN
                PRINT @counter;
            END
        END
     COMMIT TRAN
END -- End spxxx
Run Code Online (Sandbox Code Playgroud)

但它会在proc结束后打印所有消息.我希望它在运行时打印消息.

gbn*_*gbn 28

我相信你可以使用RAISERROR ...... NOWAIT

如果使用严重性10,则不是错误.这也提供了一些方便的格式,例如%s,%i,你也可以使用状态来跟踪你的位置.

  • 请尝试以下代码:DECLARE @counter INT SET @counter = 0; DECLARE @msg VARCHAR(4)WHILE @counter <1000 BEGIN SET @counter = @counter + 1; IF @counter%50 = 0 BEGIN SET @msg = CAST(@counter AS VARCHAR(4))RAISERROR(@ msg,10,0)NOWAIT WAITFOR DELAY '00:00:01'END END (2认同)