SET NOCOUNT ON

SET NOCOUNT ON

1
2
3
DECLARE @NOCOUNT VARCHAR(3) = 'OFF';
IF ( (512 & @@OPTIONS) = 512 ) SET @NOCOUNT = 'ON';
SELECT @NOCOUNT AS NOCOUNT;

SET NOCOUNT OFF 가 기본설정이가 해당 설정이 되어 있으면 아래처럼 프로시저의 응답에서 응답된 행 count를 보여준다.

간단한 테스트 프로시저를 하나 만들어 보면

1
2
3
4
5

create table test(
test_key int identity (1, 1) primary key,
name varchar(20)
)
1
2
3
4
5
6
7
8
9
10
CREATE PROCEDURE sp_test
@name varchar(20)
AS
BEGIN
insert into test(name) values (@name);
BEGIN
PRINT '테스트 프로시저 입니다.';
RETURN;
END
end

위에 프로시저를 생성후 테스트를 하면

1
2
3
4
5
test> SET NOCOUNT OFF;
exec sp_test '메롱'
[2020-05-19 15:03:19] [S0001] 테스트 프로시저 입니다.
[2020-05-19 15:03:19] 1 row affected in 4 ms

영향 받은 행수를 반환하지만

SET NOCOUNT ON 설정을 하면

1
2
3
4
test> SET NOCOUNT ON;
exec sp_test '메롱'
[2020-05-19 15:04:23] [S0001] 테스트 프로시저 입니다.
[2020-05-19 15:04:23] completed in 3 ms

메시지가 completed으로 나오면서 더이상 영향받은 행수를 표시하지 않는다.

참조