programing

T-SQL에서 ";"와 "GO"의 차이점은 무엇입니까?

itmemos 2023. 10. 4. 20:59
반응형

T-SQL에서 ";"와 "GO"의 차이점은 무엇입니까?

ADO를 씁니다.SQL Server 2008로 SQL 스크립트를 전송하기 위한 sqlcmd 유틸리티뿐만 아니라 NET도 있습니다.입니까를 하는 것의 입니까?;그리고.GOSQL 덩어리를 분리할 수 있습니까?

GO실제로는 T-SQL 명령이 아닙니다.GO명령어는 저장 프로시저의 종료와 같은 배치 문을 분리하기 위한 방법으로 마이크로소프트 툴에 의해 도입되었습니다.GO는 Microsoft SQL 스택 도구에서 지원되지만 공식적으로 다른 도구의 일부는 아닙니다.

당신은 a를 넣을 수 없습니다.GOSQL 문자열에 입력하고 ADO의 일부로 전송합니다.SQL로서 NET 명령 개체 자체가 용어를 이해하지 못합니다.하는 또 입니다를 하는 몇 을 설정하는 것입니다. 다음을 사용하는 일부 문을 설정하는 것입니다.GO쿼리 분석기/Management Studio 에서 프로파일러를 실행합니다.서버에 별도의 명령어로 발급되는 것을 볼 수 있습니다.

세미콜론은 반드시 전체 배치가 아니라 문장 자체의 끝을 나타내는 데 사용됩니다.

http://msdn.microsoft.com/en-us/library/ms188037.aspx

"GO"는 많은 경우 와 유사하지만 실제로 배치의 끝을 나타냅니다.

각 배치는 "GO" 문이 호출될 때 커밋되므로, 다음이 있는 경우:

SELECT * FROM table-that-does-not-exist;
SELECT * FROM good-table;

배치에서는 첫 번째 선택이 오류를 유발하므로 좋은 테이블 선택이 호출되지 않습니다.

대신 다음을 사용한 경우:

SELECT * FROM table-that-does-not-exist
GO
SELECT * FROM good-table
GO

첫 번째 선택 문은 여전히 오류를 발생시키지만 두 번째 문은 자신의 배치에 있기 때문에 여전히 실행됩니다.

GO는 거래를 실행하는 것과는 무관합니다.

세미콜론은 문 구분 기호입니다.세미콜론이 발생했을 때 이전 문이 반드시 실행되는 것은 아닙니다.

GO

배치의 끝을 나타냅니다.블록의 끝과 마주칠 때와 마찬가지로 이전 배치의 문을 실행합니다.

GO 2

배치를 여러 번 실행함을 의미합니다.제 생각에 저는 그 옵션을 제 인생에 두 번 정도 사용한 것 같아요.하지만 저는 DBA가 아닙니다.

  1. SQL Server TSQL(2005 - 2016)에서는 다음 사항을 고려합니다.

    • 세미콜론(; )은 블록 터미네이터입니다.
    • GO는 일괄 터미네이터입니다.
  2. 또한 GO는 다음 구문을 사용하여 동일한 DML 블록을 여러 번 호출하는 데 사용할 수 있습니다.

GO [카운트]

여기서 [count]는 해당 GO 앞에 있는 명령의 TSQL 블록을 반복 수행해야 하는 횟수를 나타내는 양의 정수입니다.

  1. 또한 세미콜론과 달리 새 DDL 앞에서는 이전 명령을 구분하는 세미콜론이 오류를 트리거하므로 GO가 필수입니다.예를 들어,

드롭뷰 # temporary_view
가세요
뷰 생성 #another_view...
--> 오류 없음

이전 예에서 GO를 세미콜론으로 대체한 경우 다음 오류 메시지가 나타납니다.

'CREATE VIEW'는 쿼리 배치의 첫 번째 문이어야 합니다.

'GO'는 일반적으로 SQL 문 배치의 끝을 나타낼 때 사용되는데, 이것은 당신이 다음을 가질 수 있다는 것을 의미합니다.begin transaction그리고.end transaction함께 실패하거나 성공할 수 있는 진술의 단일 집합으로 포장됩니다.

';' 는 일반적으로 여러 SQL 문을 서로 분리하는 데 사용됩니다.이는 'select * from table1; select * from table2;'와 같이 여러 개의 레코드 집합을 반환해야 하는 SQL 스크립트에서 두드러지는데, 이 경우 클라이언트 측에 두 개의 개별 레코드 집합이 발생합니다.

GO 명령은 배치의 끝을 의미합니다.따라서 GO 명령 뒤에 GO 전에 선언된 모든 변수는 유효하지 않습니다.세미콜론에 대해서는 배치가 종료되지 않습니다.

프로시저에서 DML 명령을 사용할 경우, GO 대신 세미콜론을 사용합니다.예를 들어,

CREATE PROCEDURE SpMyProc
@myProcParam VARCHAR(20)
AS
DECLARE @myOtherParam INT = 5
;DISABLE TRIGGER ALL ON tMyTable
UPDATE tMyTable SET myVar = @myProcParam, mySecondVar = @myOtherParam
;ENABLE TRIGGER OLL ON tMyTable 

문자는 SQL 명령 목록을 구분하고 GO는 SQL Server에 이전의 모든 명령을 커밋하도록 지시하는 것으로 생각했습니다.

언급URL : https://stackoverflow.com/questions/1517527/what-is-the-difference-between-and-go-in-t-sql

반응형