我正在尝试创建SQL脚本,如果在任何单个SQL查询中出现错误,该脚本需要恢复所做的所有模式更改。但是,我尝试将表和过程连接到同一个.sql文件下运行,并尝试捕获错误(如果存在)。当我只使用表的时候,它是有效的,但是当我尝试添加过程时,它有一些问题,所以添加到单独的表和过程。但是我不能把Begin try和GO语句结合起来。 BEGIN TRANSACTION
BEGIN TRY
Create TABLE [dbo].[Persons_1](
[PersonID] [int] NULL,
[LastName] [varchar](255) NULL,
[FirstName] [varchar](255) NULL,
[Address] [varchar](255) NULL,
[City] [varchar](255) NULL
) ON [PRIMARY] ;
Create TABLE [dbo].[Persons_2](
[PersonID] [int] NULL,
[LastName] [varchar](255) NULL,
[FirstName] [varchar](255) NULL,
[Address] [varchar](255) NULL,
[City] [varchar](255) NULL
) ON [PRIMARY] ;
CREATE PROCEDURE [dbo].[AAAtest]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Select statements for procedure here
Select * from Persons_1 ;
END;
COMMIT
END TRY
BEGIN CATCH
ROLLBACK;
THROW; -- Only if you want reraise an exception (to determine the reason of the exception)
END CATCH
|