关于它们的作用:
SET NOCOUNT ON;不返回计数。
SET NOCOUNT OFF;返回计数。这个是默认设置。
在存储过程中使用SET NOCOUNT ON后,最后需不需要SET NOCOUNT OFF呢?
这要看ON后如果没有OFF,会不会一直为ON的状态从而对其它操作造成影响呢。
试验首先创建一个存储过程:
ALTER PROCEDURE TESTPROC
@N INT
AS
BEGIN
SET NOCOUNT ON;
IF @N=1
RETURN 0;
SET NOCOUNT OFF;
PRINT '2';
END
调用存储过程传入变量值1,会直接返回,不会OFF掉。
DECLARE @K INT;
DECLARE @RE INT;
SET @K=1;
EXEC @RE=TESTPROC @K;
PRINT @RE
打印结果:0。
2没有打印出来,SET NOCOUNT OFF没有执行。
此时执行一个SQL语句:
SELECT * FROM TEST;
查看消息:(18 行受影响)
说明没有影响,所以存储过程中SET NOCOUNT ON后,不需要SET NOCOUNT OFF。