--存在就删除
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[NAME]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[ProcName]
GO
--还有一种删除的写法
IF EXISTS(SELECT * FROM sysobjects WHERE type='p' AND NAME='ProcName')
BEGIN
DROP PROC ProcName
END
go
--创建一个存储过程
CREATE PROCEDURE ProcName
AS
BEGIN
BEGIN TRY
DECLARE @TranFlag INT --事务标志 0:新建事务 1:保存已经存在事务点
IF @@TRANCOUNT = 0 --事务个数为0,创建新事务
BEGIN
BEGIN TRAN CurrTran
SET @TranFlag = 0
END
ELSE --已经存在事务
SET @TranFlag = 1
SAVE TRAN CurrTran --保存事务点,提交或回滚时从该事务点开始。
------------------------------
--进行相关操作。
------------------------------
IF @TranFlag = 0 --新建事务时才进行提交。
COMMIT TRAN CurrTran
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE() --打印一下错误的消息文本
IF @TranFlag = 0
BEGIN
--回滚整个事务
ROLLBACK TRAN
END
ELSE
BEGIN
--回滚当前事务点
ROLLBACK TRAN CurrTran
END
END CATCH
END
GO