2010-06-03 2 views
3

클라이언트의 컴퓨터에서 테이블을 업데이트하려고하는 SQL 문이 있습니다.실행 문 일괄 처리에 대한 전역 변수 선언 - sql server 2005

BEGIN TRANSACTION 


    DECLARE @CreatedBy INT 

    SELECT @CreatedBy = [User_Id] 
    FROM Users 
    WHERE UserName = 'Administrator' 

    --//////////////////////////////////////////////////////////////////// 
    --//////////////////////////////////////////////////////////////////// 

    PRINT @CreatedBy --(Works fine here and shows me the output) 

    PRINT N'Rebuilding [dbo].[Some_Master]' 
    ALTER TABLE [dbo].[Some_Master] 
    ADD [CreatedBy] [BIGINT] NULL, 
     [Reason] [VARCHAR](200) NULL 
    GO 

    PRINT @CreatedBy --(does not work here and throws me an error) 


    PRINT N'Updating data in [Some_Master] table' 
    UPDATE Some_Master 
    SET  CreatedBy = @CreatedBy 

    COMMIT TRANSACTION 

을하지만 난 다음 오류가 점점 오전 :

은 스칼라 변수 "@CreatedBy"를 선언해야 다음과 같이 는 SQL 문입니다.

이제는 내가 잘 작동하고 그 값을 보여주는 alter 명령 위에 Print 문을 쓰지 만, 만약 내가 알맞은 명령을 한 후에 값을 인쇄하려한다면, 위에서 지정한 오류를 던졌습니다.

이유를 모르겠습니까 ?? 도와주세요!

답변

3

GO은 명령 모음의 끝을 알리기 때문에 발생합니다. 따라서 GO 이후에는 별도의 일괄 처리이므로 변수 @CreatedBy은 더 이상 범위에 포함되지 않습니다.

GO 문을 제거해보십시오.

+0

그래,'GO' 문을 제거하면 괜찮을거야. 그래서'@ variables'는 배치 중에 만 살 수 있습니다. 배치의 수명을 연장 할 수있는 변수가 있습니까? –

1

난 당신이 GO 문을 제거 할 필요가 있다고 생각합니다 감사합니다.

1

"GO"문을 제거하십시오.