您的位置:首页 > 数据库 > SQL

存储过程模板

2010-12-28 10:58 127 查看
--IF EXISTS(SELECT * FROM sysobjects WHERE name='SPModel')
--	DROP PROC SPModel
--GO

IF OBJECT_ID(N'dbo.SPModel',N'P') IS NOT NULL
DROP PROC SPModel
GO

CREATE PROC dbo.SPModel
(
@X1 as int
,@X2 as nvarchar(100)
,@Y1 as datetime
,@Y2 as decimal output
)
AS
/**************************************************
Author:    v-cuwang
Date:      YYYY-MM-DD
Function Description:
Built a Stored Procedure model, you must follow the rules to create your SP.
-----------------------------------------------
Parameters:
@X1
Datetype:
Description:
@X2
Datetype:
Description:
@Y1
Datetype:
Description:
@Y2
Datetype:
Description:
-----------------------------------------------
Modifier         Date          Description
v-xiala          2010-12-25    For 3.5 release
**********************************************/
BEGIN
SET NOCOUNT ON
/*---------------------------------------------
-------STEP1: Declare
---------------------------------------------*/
DECLARE @ErrorMessage nvarchar(4000)
DECLARE @ErrorSeverity int
DECLARE @ErrorState int

DECLARE @XX1 int
DECLARE @YY1 int
/*---------------------------------------------
-------STEP2: Initilize
---------------------------------------------*/
SET @XX1=1
SET @YY1=2
/*---------------------------------------------
-------STEP3: Get data from table TA
---------------------------------------------*/
BEGIN TRY
SELECT * FROM TA

-- 一次性清空表,请使用truncate代替delete
TRUNCATE TABLE tablename

-- insert语句要把字段名写全
INSERT INTO tablename(col1, col2)
VALUES(@XX1, @XX2);

-- 批量插入
insert into tablename1(col1, col2)
select col1, col2
from tablename2

-- 判断语句
if (@xxx1 = ? or @xxx2 = ?)
begin
----
end
else
begin
----
end

-- 循环语句
while (@xxx1 <> ?)
begin
----
end

-- 事务
---- 如果显式使用事务,请注意SQL Server默认的事务隔离级别是读提交(Read Committed)
---- 如果使用更高级别的事务隔离级别,请详细阅读帮助文档,避免不必要的锁阻塞
BEGIN TRANSACTION
INSERT INTO xxxxxTable(f1,f2)
VALUES(@a,@b)
SELECT @id=@@identity
INSERT INTO abcTable(ff1,ff2,ff3)
VALUES(@c,@id,@dd)
IF @@error <> 0  --发生错误
BEGIN
ROLLBACK TRANSACTION
RETURN 0
END
ELSE
BEGIN
COMMIT TRANSACTION
RETURN 1    --执行成功
END

END TRY
-- 异常处理机制
---- 1、在第一次使用异常处理机制之前声明异常变量
---- 2、对容易发生错误的操作,用trycatch进行异常捕获(声明变量不需要)
---- 3、在清理资源后,将错误记录保存在自己的log表中,用exec--
---- 4、最后使用raiserror将错误返回给调用者
---- 5. begin catch 要紧跟着end try,中间不允许有其他语句
BEGIN CATCH
---- 清理上面try中使用的资源,如删除临时表、销毁游标、回滚事务等
---- 设置错误变量
set @ErrorMessage = ERROR_MESSAGE()
set @ErrorSeverity = ERROR_SEVERITY()
set @ErrorState = ERROR_STATE()

raiserror (@ErrorMessage,
@ErrorSeverity,
@ErrorState)

END CATCH
END
GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息