본문 바로가기

프로그래밍&IT/SQL Server (MS-SQL)

SQL Server - GO에 대해서 (BATCH)

GO를 알기 전에 작업단위 (BATCH)란?

  • 실행을 위해 프로그램으로부터 서버로 동시에 전송되어 실행되는 여러 T-SQL문장의 조합
  • MSSQL의 데이터베이스 엔진은 작업단위로 전송된 SQL 문장들에 대해 단일 실행계획으로 만들어 수행
  • 만약 작업단위내 한 문장이라도 컴파일 오류를 포함하게 되면 해당 작업단위는 수행되지 않는다
  • 이때, 일괄처리를 정하기위해서 "GO"라는 예약어를 사용한다.

 

GO를 쓰는 이유.

한마디로 BATCH (일괄처리)의 단위라고 볼 수 있다.

한줄 한줄 실행할 때마다 매번 데이터베이스에 접속하면 처리시간이 길어지고 비효율적이다.

이에 큰 덩어리 단위로, 묶어서 보내주는 BATCH 개념이 나오게 된다.

그리고 GO는 그 구분점.

 

GO명령어는 T-SQL의 구문이 아니며, 아래의 3개 툴에서 쓰인다.

  1. SQL command
  2. OSQL 유틸리티
  3. SQL Server Management Studio 코드 편집기

 

특징

이전에 쓰인 GO 다음부터 현재 GO 앞까지를 실행한다.

이때 이전에 선언한 변수뒤에 GO가 들어왔으면 리셋되어 버린다.

해당 변수를 재사용하려면 GO 뒤에 재선언해야 한다.

 

만약 GO [횟수]

처럼 쓰면 지정된 횟수만큼 배치작업이 반복실행된다.