sourcetip

SQL Server에서는 언제 GO를 사용해야 하며 언제 semi-colon을 사용해야 합니까?

fileupload 2023. 4. 18. 23:16
반응형

SQL Server에서는 언제 GO를 사용해야 하며 언제 semi-colon을 사용해야 합니까?

명령어 뒤에 GO 키워드를 사용해야 하는 시기와 명령어 끝에 세미콜론이 필요한지 항상 헷갈려 왔습니다.차이점은 무엇이며, 사용해야 하는 이유/시기는 무엇입니까?

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

GOSSMS에만 관계합니다.실제 트랜잭션 SQL은 아닙니다.각각의 사이에 SQL 문을 송신하도록 SSMS에 지시할 뿐입니다.GO개별 배치에 순차적으로 배치됩니다.

;는 SQL 문의 딜리미터입니다만, 대부분의 경우 엔진은 문의 분할 위치를 해석할 수 있습니다.

주요 예외 사항 및 장소;는 Common Table Expression 스테이트먼트 전에 가장 많이 사용됩니다.

생성된 DDL 스크립트에 이렇게 많은 GO가 표시되는 이유는 배치에 대한 다음 규칙 때문입니다.

CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE Rule, CREATE TRIGER 및 CREATE VIEW 문은 일괄적으로 다른 문과 결합할 수 없습니다.CREATE 문은 배치를 시작해야 합니다.해당 배치에 이어지는 다른 모든 문장은 첫 번째 CREATE 문 정의의 일부로 해석됩니다.

생성된 DDL의 사용 사례 중 하나는 단일 파일에 여러 개체를 생성하는 것입니다.따라서 DDL 제너레이터는 배치를 생성할 수 있어야 합니다.다른 사람들이 말했듯이, GO 스테이트먼트에 의해 배치가 종료됩니다.

가세요

Go는 배치 구분자입니다.즉, 그 배치의 모든 것이 그 특정 배치에 대해 로컬임을 의미합니다.

변수, 표 변수 등의 선언이 교차하지 않음GO진술들.

#템프 테이블은 연결에 대해 로컬이므로 GO 문에 걸쳐 있습니다.

세미콜론

세미콜론은 스테이트먼트 터미네이터입니다.이는 특정 스테이트먼트가 종료되었음을 식별하기 위해 순수하게 사용됩니다.

대부분의 경우 문의 구문만으로 문의 끝을 결정할 수 있습니다.

단, CTE에서는 WITH가 첫 번째 문이어야 하므로 WITH 앞에 세미콜론이 필요합니다.

모든 SQL 문을 종료하려면 세미콜론을 사용해야 합니다.이는 SQL 표준에 정의되어 있습니다.

물론 SQL Server에서 문의 종료자를 생략할 수 있는 경우가 많습니다만, 왜 나쁜 습관을 들이는 것일까요?

다른 사람들이 지적한 바와 같이 Common Table Expression(CTE; 공통 테이블식) 앞에 있는 문은 세미콜론으로 종료해야 합니다.그 결과 세미콜론 터미네이터를 완전히 수용하지 않은 사람들로부터 다음과 같은 사실을 알 수 있습니다.

;WITH ...

정말 이상하게 보이는 것 같아요.온라인 포럼에서는 코드 품질을 알 수 없는 것이 타당하다고 생각합니다.

a ,,MERGE스테이트먼트는 세미코드로 종료해야 합니다.기기패 턴턴?이것들은 SQL 표준에 준거한 TSQL에 추가된 몇 가지 새로운 기능입니다.SQL Server 팀은 세미콜론 터미네이터 사용을 의무화하고 있는 것 같습니다.

GO는 배치 터미네이터, 세미콜론은 스테이트먼트 터미네이터입니다.

1개의 스크립트에 여러 create proc 문을 포함하는 경우 go를 사용합니다.create proc는 배치의 첫 번째 문이어야 하기 때문입니다.일반적인 테이블 식을 사용하는 경우, 앞의 문은 세미콜론으로 종료해야 합니다.

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

반응형