这里保存两个模板,业务实际需要时拿来就能用
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
简短一点的
--课程 公告信息
if object_id('provide_announcements_info') is not null
drop proc provide_announcements_info
go
create proc provide_announcements_info
as
begin
delete from announcements_info
insert into announcements_info(
announcementid,--课程公告 id,不能为空和重复
title,--课程公告名称,不能为空
launchCourseid,--选课 id,不能为空
description,--课程简介
creatorid,--课程公告发布 userid,不能为空
createdtime,--时间格式:2009-11-26 13:17:35,不能为空
modifiedtime--时间格式:2009-11-26 13:17:35,不能为空
)
select distinct
pk1,
isnull(subject,'') as subject,
isnull(crsmain_pk1,'') as crsmain_pk1,
isnull(announcement,'') as announcement,
isnull(users_pk1,'') as users_pk1,
isnull(dtcreated,'') as dtcreated,
isnull(dtmodified,'') as dtmodified
from
anno
where crsmain_pk1 in (123,456,789)
end
← 建表