2014-04-10 2 views
0

프로 시저 내부의 업데이트 문을 GO으로 분리하여 프로 시저를 수정하려고하므로 일괄 처리됩니다.여러 개의 GO가 BEGIN TRY CATCH 안에있을 수 있습니까?

GO의 여러 줄을 try try catch의 끝에 넣을 수 있습니까? 내가 묻는 이유는 절차에서 ALTER 문을 실행할 때 아무 일도 일어나지 않기 때문입니다. 그것은 단지 실행 중이고 멈추지 않습니다. 내가 잘못하고있는 무슨

USE [CRM_Staging] 
GO 
/****** Object: StoredProcedure [dbo].[CustomerProduct_Import] Script Date: 04/10/2014 12:38:50 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[CustomerProduct_Import] 
(
    @LogId UNIQUEIDENTIFIER = NULL 
) 
AS 


BEGIN 

BEGIN TRY 

select..... 

go 

update... 

go 

update... 

go 

END TRY 

BEGIN CATCH 
END CATCH 
    RETURN 1 [email protected] 
END 

나는 여기 구불 구불 한 라인을 가지고, "expecting conversation"

enter image description here

?

전체 스크립트

은 여기에 있습니다 : http://pastebin.com/WDmqwn2N

+0

나는 우리가 당신을 도우려는 시도가 무엇인지 알아야한다고 생각합니다. 1 블록에 여러 개의 명령문을 가질 수 있습니다. – pquest

+0

고맙습니다. http://pastebin.com/WDmqwn2N –

답변

3

GO는 일괄 분리합니다. 저장 프로 시저 내부의 첫 번째 GO는 프로 시저의 정의를 끝내고, GO는 프로 시저의 일부로 간주되지 않습니다. 프로 시저 안에 GO를 사용할 수 없습니다.

당신이하려는 것은 무엇이든, 그것은 적절한 방법이 아닙니다.

+1

을 받으 셨습니다. 고맙습니다. 그래서 나는 트랜잭션을 시작하여 업데이트를 분리해야합니까? –

+0

왜 그랬니? 프로 시저 내부의 모든 업데이트를 모두 수행할지 또는 아무것도 수행하지 않겠습니까? – dean

+0

예, COMMIT 트랜잭션을 사용할 수 있습니다 - StoredProc이 끝날 때 커밋한다는 것을 알고 있습니다. –