mssql GO 명령

mssql GO 명령

SQL Server 유틸리티 문 - GO

본 문서의 정보는 다음의 제품에 적용됩니다. SQL Server

SQL Server는 Transact-SQL 문은 아니지만 sqlcmd 및 osql 유틸리티와 SQL Server Management Studio 코드 편집기에서 인식하는 명령을 제공합니다.
이 명령은 일괄 처리 및 스크립트의 가독성 및 실행을 용이하게하는 데 사용할 수 있습니다.

GO는 Transact-SQL 문의 배치의 끝을 SQL Server 유틸리티에 알립니다.

Syntax

1
2
3

GO [count]

Arguments

count

양의 정수입니다. GO 앞의 일괄 처리는 지정된 횟수만큼 실행됩니다.

Remarks

GO는 Transact-SQL 문이 아닙니다. sqlcmd 및 osql 유틸리티 및 SQL Server Management Studio 코드 편집기에서 인식하는 명령 입니다.

SQL Server 유틸리티는 GO를 현재 Transact-SQL 문을 SQL Server 인스턴스로 보내야한다는 신호로 해석합니다.
현재 명령문 배치는 마지막 GO 이후에 입력 된 모든 명령문으로 구성됩니다. 또는 이것이 처음 GO 인 경우 특별 세션 또는 스크립트의 시작 이후로 입력됩니다.

Transact-SQL 문은 GO 명령과 같은 줄을 차지할 수 없습니다.
그러나 줄에는 주석이 포함될 수 있습니다.

사용자는 일괄 처리 규칙을 따라야합니다. 예를 들어, 일 처리의 첫 x 째 명령.
이후에 스토어드 프로 시저를 실행하면 EXECUTE 키워드가 포함되어야합니다.
로컬 (사용자 정의) 변수의 범위는 일괄 처리로 제한되며 GO 명령 다음에 참조 할 수 없습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

USE AdventureWorks2012;
GO
DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
GO -- @MyMsg is not valid after this GO ends the batch.

-- Yields an error because @MyMsg not declared in this batch.
PRINT @MyMsg
GO

SELECT @@VERSION;
-- Yields an error: Must be EXEC sp_who if not first statement in
-- batch.
sp_who
GO

SQL Server 응용 프로그램은 여러 Transact-SQL 문을 SQL Server 인스턴스에 보내서 배치로 실행할 수 있습니다.
일괄 처리의 문은 단일 실행 계획으로 컴파일됩니다.
SQL Server 유틸리티에서 임시 명령문을 실행하거나 Transact-SQL 문의 스크립트를 작성하여 SQL Server 유틸리티를 실행하는 프로그래머는 GO 명령을 사용하여 배치의 끝을 알립니다.

ODBC 또는 OLE DB API를 기반으로하는 응용 프로그램은 GO 명령을 실행하려고하면 구문 오류가 발생합니다.
SQL Server 유틸리티는 절대로 GO 명령을 서버에 보내지 않습니다.

GO 후 명령문 종료 자로 세미콜론을 사용하지 마십시오.

1
2
3
4
5

-- 에러가 난다 ; 때문에
SELECT @@VERSION;
GO;

Permissions

GO는 권한이 필요없는 유틸리티 명령입니다. 모든 사용자가 실행할 수 있습니다.

Examples

다음 예제는 두 개의 배치를 작성합니다. 첫 번째 일 처리에는 USE AdventureWorks2012데이터베이스 컨텍스트를 설정 하는 명령문 만 포함됩니다.
나머지 문은 지역 변수를 사용합니다.
따라서 모든 로컬 변수 선언은 단일 일괄 처리로 그룹화되어야합니다. 이것은 GO변수를 참조하는 마지막 명령문 이후까지 명령을 가지지 않음으로써 수행됩니다.

1
2
3
4
5
6
7
8
9
10
11

USE AdventureWorks2012;
GO
DECLARE @NmbrPeople int
SELECT @NmbrPeople = COUNT(*)
FROM Person.Person;
PRINT 'The number of people as of ' +
CAST(GETDATE() AS char(20)) + ' is ' +
CAST(@NmbrPeople AS char (10));
GO

다음 예제에서는 일괄 처리의 문을 두 번 실행합니다.

1
2
3
4
5

SELECT DB_NAME();
SELECT USER_NAME();
GO 2

참조