IT story

SQL Server에서는 언제 GO를 사용해야하며 언제 세미콜론을 사용해야합니까?

hot-time 2020. 9. 2. 20:51
반응형

SQL Server에서는 언제 GO를 사용해야하며 언제 세미콜론을 사용해야합니까?


명령 뒤에 GO 키워드를 사용해야 할 때와 명령 끝에 세미콜론이 필요한지 항상 혼란스러워했습니다. 차이점은 무엇이며 왜 / 언제 사용해야합니까?

SQL Server Management Studio에서 Generate-script를 실행하면 모든 곳에서 GO를 사용하는 것 같지만 세미콜론은 사용하지 않습니다.


GOSSMS 와만 관련이 있습니다. 실제 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를 사용합니다. 공통 테이블 표현식을 사용하는 경우 세미콜론으로 종료해야하는 이전 명령문

참고 URL : https://stackoverflow.com/questions/3701147/in-sql-server-when-should-you-use-go-and-when-should-you-use-semi-colon

반응형