你可以在BEGIN TRY CATCH内有多个GO吗?

时间:2014-04-10 17:53:18

标签: sql sql-server sql-server-2008 tsql

我正在尝试通过将过程内的更新语句与GO分开来修改过程,以便对它们进行批处理。

将多个GO放在end 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 --@Success
END

我也有曲线,"expecting conversation"

enter image description here

我做错了什么?

完整的脚本在这里: http://pastebin.com/WDmqwn2N

1 个答案:

答案 0 :(得分:3)

GO是一个批处理分隔符。存储过程中的第一个GO结束过程的定义,在GO之后的所有内容都不被视为过程的一部分。你不能在程序中使用GO。

所以,无论你想做什么,都不是正确的方法。