mssql sqlserver存储过程通用模板


摘要:
下文讲述一个通用的sqlserver存储过程模板,此模块中讲述了关于异常的捕捉和处理,
以及存储过程事务的用法,如下所示:


CREATE proc[dbo].[pr_moBan]
(
	@param_In   参数类型, --传入参数
        ....
	@param_Out  参数类型 OUTPUT --输出参数
)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @procStartTime   DATETIME
	DECLARE @procRunAllTime  INT
 
	DECLARE @error INT ---运行状态 不等于,则代表运行出错
	DECLARE @RowCount INT --上一条脚本影响的行数
	 
	DECLARE @errorMsg  NVARCHAR(2000)

	--变量赋值
	SET @procStartTime   = GETDATE()
	SET @error  = 0
	
	 

	 --开启事务
	 BEGIN TRAN
	 BEGIN TRY

	 /*
         脚本运行 
        */
        set @error =@@error;set @RowCount =@@rowCount
	 --脚本运行总时长
	 SET @procRunAllTime  =datediff(second,@procStartTime   ,getdate());

	 END TRY
	 BEGIN CATCH

	IF @@TRANCOUNT > 0
	BEGIN
		ROLLBACK TRAN
	          SELECT @errorMsg='运行出错:'+CAST(ERROR_NUMBER() AS VARCHAR)+','+ERROR_MESSAGE() 
	END

	END CATCH

	IF @@TRANCOUNT > 0 AND @error = 0  
	BEGIN
		COMMIT TRAN;
	END

	IF @@TRANCOUNT > 0 AND @error <> 0
	BEGIN
		ROLLBACK TRAN;
	END

 
        ---插入存储过程运行日志
        ****

	END
go