글
MSSQL에서 GO 명령은 배치단위를 구분하는 명령으로 사용됩니다.
예를 들어, 아래와 같이 GO로 구분되면 한꺼번에 두 개의 문장을 실행하였다고 하더라도, 두 개의 문장은 별도의 배치로 실행됩니다.
SELECT * FROM 테이블
go
SELECT * FROM 테이블
go
하지만 아래와 같이 GO로 구분하지 않으면, 두 개의 문장은 하나의 배치로 한꺼번에 실행됩니다.
SELECT * FROM 테이블
SELECT * FROM 테이블
go
이를 구분하기 위해서는 SQL 프로파일러를 사용하여 확인해 보시면 되겠습니다.
P.S>
참고로 아래의 구문은 먼저 데이터베이스를 생성하고,
그 다음 생성된 데이터베이스로 데이터베이스 컨텍스트를 변경하는 것입니다.
create database K_League
go
use K_League
go
go를 경계로 일괄처리가 구분되기 때문에.
한쪽에서 정의한 변수를 다른쪽에서는 사용할수 없습니다.
DECLARE @num int
go
SET @num = 10
하시면 에러가 납니다.
SET @num = 10 은 go 위에서 정의 되었는데.
go를 사용함으로써 일괄처리가 끝나고 다시 새로운 일괄처리가 시작되므로써,
변수가 정의가 되지 않은 것입니다.
PS>
(1) 위 Procedure의 끝부분에 있는 End; 에서 ; 문자는 종결자라고 합니다. 종결자는 Query가 실행되는 하나의Query 단 위의 종료문자에 해당합니다.
(2) Go뒤에 숫자를 써주게 되면 해당 하는 숫자만큼 Go영역의 배치처리실행을 반복하게됩니다.
'MSSQL 2008 > SQL' 카테고리의 다른 글
SELECT 기본 문법 (0) | 2014.03.03 |
---|---|
DB에서 컬럼 이름 찾기 - MS SQL (0) | 2014.02.26 |
SET 옵션들 (0) | 2014.01.13 |
쿼리 처리 과정 / SELECT 실행순서 (0) | 2014.01.07 |
delete , truncate, drop 차이 (0) | 2013.12.05 |