如何在sql server中使用变量打开/关闭统计时间?

zphenhs4  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(326)

我需要用很多 set statistics time on 以及 set statistics time off 所以我可以检查每一步的运行时间。有没有什么方法可以用一个变量来替换 ON 以及 OFF ?

CREATE Procedure CPP_InsertOneRows
(@turnStatistics bit = 0
)
AS
BEGIN
    DECLARE @onOrOff CHAR(3);
    IF @turnStatistics = 1
    BEGIN 
        SET @onOrOff = 'ON';
    END 
    ELSE 
    BEGIN
        SET @onOrOff = 'OFF';
    END

    SET STATISTICS TIME OFF -- how can I use @onOrOff to replace the 'OFF' here?
    SET STATISTICS IO Off

我用对了吗?或者有其他方法可以做到这一点?谢谢~

chy5wohz

chy5wohz1#

您必须在 IF :

IF @turnStatistics = 1 
    SET STATISTICS TIME ON;
ELSE
    SET STATISTICS TIME OFF;

...

SET STATISTICS TIME OFF;

不能对的值使用变量 OFF / ON ,它必须是一个文本。

gab6jxml

gab6jxml2#

如果您想检查代码每一步所用的时间,可以使用以下方法

Print 'Step 1 started'
print CONVERT (TIME, GETDATE()) 
 WAITFOR DELAY '00:00:01'; -- function 
Print 'Step 1 ended'
print CONVERT (TIME, GETDATE()) 

Print 'Step 2 started'
print CONVERT (TIME, GETDATE()) 
 WAITFOR DELAY '00:00:02';  --- function 
Print 'Step 2 ended'
print CONVERT (TIME, GETDATE())


请确保在测试后删除此项或使用@trace参数,如果此@trace=1,则仅运行此项。默认情况下,此项设置为@trace=0(带if块)

相关问题