명령 뒤에 GO 키워드를 사용해야 할 때와 명령 끝에 세미콜론이 필요한지 항상 혼란스러워했습니다. 차이점은 무엇이며 왜 / 언제 사용해야합니까?
SQL Server Management Studio에서 Generate-script를 실행하면 모든 곳에서 GO를 사용하는 것 같지만 세미콜론은 사용하지 않습니다.
답변
GO
SSMS 와만 관련이 있습니다. 실제 Transact SQL이 아니며 SSMS GO
에 개별 일괄 처리에서 순차적으로 SQL 문을 보내도록 지시 합니다.
는 ;
SQL 문 구분 기호이지만, 대부분의 엔진은 문이 깨진 곳 해석 할 수 있습니다.
주된 예외 및 ;
가장 자주 사용되는 장소 는 공통 테이블 표현식 문 앞입니다.
답변
생성 된 DDL 스크립트에 GO가 너무 많이 표시되는 이유 는 배치 에 대한 다음 규칙 때문입니다 .
CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TRIGGER 및 CREATE VIEW 문은 일괄 처리에서 다른 문과 결합 할 수 없습니다. CREATE 문은 일괄 처리를 시작해야합니다. 해당 일괄 처리에서 뒤 따르는 다른 모든 문은 첫 번째 CREATE 문 정의의 일부로 해석됩니다.
생성 된 DDL의 사용 사례 중 하나는 단일 파일에 여러 개체를 생성하는 것입니다. 이 때문에 DDL 생성기는 배치를 생성 할 수 있어야합니다. 다른 사람들이 말했듯이 GO 문은 배치를 종료합니다.
답변
가다
Go는 일괄 구분 기호입니다. 이는 해당 배치의 모든 것이 해당 특정 배치에 로컬임을 의미합니다.
변수, 테이블 변수 등의 선언은 GO
명령문을 거치지 않습니다 .
#Temp 테이블은 연결에 로컬이므로 GO 문에 걸쳐 있습니다.
세미콜론
세미콜론은 문 종결 자입니다. 이것은 순전히 특정 명령문이 종료되었음을 식별하는 데 사용됩니다.
대부분의 경우 명령문 구문 자체만으로도 명령문의 끝을 확인할 수 있습니다.
그러나 CTE는 WITH가 첫 번째 문이므로 WITH 앞에 세미콜론이 필요합니다.
답변
세미콜론을 사용하여 모든 SQL 문을 종료해야합니다. 이것은 SQL 표준에 정의되어 있습니다.
물론 SQL Server에서는 문 종결자를 생략 할 수있는 경우가 많지만 왜 나쁜 습관에 빠지게 될까요?
다른 사람들이 지적했듯이 CTE (공통 테이블 식) 앞의 문은 세미콜론으로 끝나야합니다. 결과적으로 세미콜론 종결자를 완전히 수용하지 않은 사람들로부터 우리는 다음을 볼 수 있습니다.
;WITH ...
정말 이상해 보입니다. 붙여 넣을 코드의 품질을 알 수없는 온라인 포럼에서 의미가 있다고 생각합니다.
또한 MERGE
문은 세미콜론으로 종료해야합니다. 여기에 패턴이 보이십니까? 이들은 SQL 표준을 밀접하게 따르는 TSQL에 대한 몇 가지 새로운 추가 사항입니다. SQL Server 팀이 세미콜론 종결 자 사용을 의무화하는 길을 가고있는 것 같습니다.
답변
GO는 배치 종료 자이고 세미콜론은 명령문 종료 자입니다.
create proc이 일괄 처리의 첫 번째 문이어야하므로 하나의 스크립트에 여러 개의 create proc 문이 있어야 할 때 GO를 사용합니다. 공통 테이블 표현식을 사용하는 경우 세미콜론으로 종료해야하는 이전 명령문
답변
