【发布时间】:2018-08-05 10:20:34
【问题描述】:
我需要在 SQL Server 事务中创建两个过程。如果失败,我需要回滚此事务中的创建和任何其他执行的查询。我知道 create 语句必须是查询批处理中的第一个语句,但我需要知道如何处理多个批处理的事务。
BEGIN TRANSACTION
CREATE PROCEDURE [dbo].[SP_SP-1]
@id BIGINT
AS
BEGIN
SET NOCOUNT ON;
-- SQL statements
END
GO
CREATE PROCEDURE [dbo].[SP_SP-2]
@id BIGINT
AS
BEGIN
SET NOCOUNT ON;
-- SP-2 statements
END
GO
UPDATE Table
SET Value = '1.0.0.5'
COMMIT TRANSACTION / ROLLBACK TRANSACTION
【问题讨论】:
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀! -
感谢您的注意,我会牢记这一点,谢谢 :)
标签: sql sql-server tsql stored-procedures sql-server-2012