存储过程直接套用模板、
流程控制、
执行日志、
根绝实际情况选择、
CREATE PROCEDURE [dbo].[procProcTemplete]
(
@a INT, -- 入参
@b INT OUTPUT --出参
)
AS
BEGIN
SET NOCOUNT ON;
--变量定义
--计算过程执行时长
DECLARE @starttime DATETIME
DECLARE @totaltime INT
--流程控制(成功失败)
DECLARE @Result INT
--执行影响行数
DECLARE @ROW INT
--错误日志
DECLARE @ErrorMessage VARCHAR(1000)
--变量赋值
SET @starttime = GETDATE()
SET @Result = 0
--创建临时表
CREATE TABLE #tmp_aa
(Id INT,
Value VARCHAR(50))
--处理临时表数据
INSERT INTO #tmp_aa
( Id, Value )
VALUES ( 0, -- Id - int
'AAA' -- Value - varchar(50)
)
--开启事务
BEGIN TRAN
BEGIN TRY
--计算逻辑
IF EXISTS(SELECT 1 FROM #tmp_aa
WHERE Id = @a)
BEGIN
SET @b = 1
SET @Result = 0
SET @ROW = @@ROWCOUNT
END
ELSE
BEGIN
SET @Result = 1
END
--计算总时长
SET @totaltime=datediff(second,@starttime,getdate());
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRAN
SELECT @ErrorMessage='操作发生异常:'+CAST(ERROR_NUMBER() AS VARCHAR)+','+ERROR_MESSAGE(),@Result = -1
END
END CATCH
IF @@TRANCOUNT > 0 AND @Result = 0
BEGIN
COMMIT TRAN;
END
IF @@TRANCOUNT > 0 AND @Result <> 0
BEGIN
ROLLBACK TRAN;
END
--SELECT @b AS b;
--删除临时表
IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmp_aa'))
BEGIN
DROP TABLE #tmp_aa
END
--记录日志
INSERT INTO tb_SYSLOGS(Logger,Logtime,LogIP,Logname,LogTotalTime,LevelCode,Message,LogSQL)
SELECT 'Templete',GETDATE(),'::1','sa',@totaltime,'procProcTemplete','','影响行数' + CAST(@ROW AS VARCHAR(10)) + ',' + @ErrorMessage;
END