- SET NOCOUNT ON/OFF
Stops the message that shows the count of the number of rows affected by a Transact-SQL statement or stored procedure from being returned as part of the result set.
예시1)
CREATE PROCEDURE dbo.getRecordSet
BEGIN
SELECT *
FROM #LIST
END
예시2)
CREATE PROCEDURE dbo.getRecordSet
BEGIN
SET NOCOUNT ON
SELECT *
FROM #LIST
END
EXEC dbo.getRecordSet 호출 시 예시1은 RecordSet을 넘겨 받지 못하며, 예시2은 RecordSet을 넘겨 받는다.
프로시저는 항상 자신의 마지막 로직(SELECT, UPDATE, INSERT, DELETE)에서 영향받은 record 수를 반환한다.
이를 통해서, 'N개의 행이 적용되었습니다.' 메세지를 뿌려주게 된다. SET NOCOUNT ON 할 경우, record 수를 반환하지 않는다.
- SET ANSI_NULLS ON/OFF
Specifies ISO compliant behavior of the Equals (=) and Not Equal To (<>) comparison operators when they are used with null values in SQL Server 2016.
예시전 기초 Table 생성)
SELECT '1' AS SEQ, NULL AS VALUE
INTO #LIST
UNION ALL
SELECT '2' AS SEQ, 'A' AS VALUE
UNION ALL
SELECT '3' AS SEQ, 'B' AS VALUE
SET ANSI_NULLS ON
GO
SELECT SEQ, VALUE
FROM #LIST
WHERE VALUE = NULL
SET ANSI_NULLS OFF
GO
SELECT SEQ, VALUE
FROM #LIST
WHERE VALUE = NULL
예시1은 조회된 record 수가 없으며, 예시2은 seq=1의 record 조회 된다.
SELECT *
FROM #LIST
WHERE VALUE IS NULL
SET ANSI_NULLS 과 무관하게 VALUE=NULL인 record를 조회하고 싶다면, 다음과 같이 Sql 문을 작성하자.
- SET QUOTED_IDENTIFIER ON/OFF
Causes SQL Server to follow the ISO rules regarding quotation mark delimiting identifiers and literal strings. Identifiers delimited by double quotation marks can be either Transact-SQL reserved keywords or can contain characters not generally allowed by the Transact-SQL syntax rules for identifiers.
예시1-1)
SET QUOTED_IDENTIFIER ON
GO
select "실행" as seq
예시1-2)
SET QUOTED_IDENTIFIER OFF
GO
select "실행" as seq
예시2-1)
SET QUOTED_IDENTIFIER ON
GO
select CHAR(39)+'실행'+CHAR(39) as seq
예시2-1)
SET QUOTED_IDENTIFIER OFF
GO
select "'실행'" as seq
SET QUOTED_IDENTIFIER ON
GO
SET QUOTED_IDENTIFIER OFF
GO
예시1-1은 Error가 발생하며, 예시1-2은 Error가 발생되지 않는다.
예시2-1, 예시2-2은 같은 결과를 return 한다.
예시3-1은 seq=1의 record 조회되며, 예시3-2은 조회된 record 수가 없다.
옵션이 ON으로 설정되면 식별자를 큰따옴표(")로 구분할 수 있고, 리터럴을 작은따옴표(')로 구분해야 합니다.
OFF(기본값)로 설정되면 식별자가 따옴표 안에 있을 수 없고 모든 Transact-SQL 식별자 규칙을 따라야 합니다. ex) [VALUE] (O), "VALUE" (X)
리터럴은 작은따옴표(') 또는 큰따옴표(")으로 구분할 수 있습니다.
* 참조
https://msdn.microsoft.com/en-us/library/ms190356.aspx
'Database > MSSQL' 카테고리의 다른 글
[MSSQL]SET Statements vol2 (0) | 2016.06.15 |
---|---|
[MSSQL] Adding a string to a text column (0) | 2016.05.30 |
[MSSQL] 특정 필드 Update 시 Trigger 작동 (0) | 2016.03.23 |
MS SQL Server Management Studio 단축키 모음 (0) | 2016.02.02 |
SSMS(SQL Server Management Studio) 로그인 자동완성 삭제하기 (0) | 2016.01.21 |