当前位置: > 数据库 > SQL Server 2005 >

SQL 存储过程实例

时间:2017-02-25 17:08来源:linux.it.net.cn 作者:IT
由于工作中没有涉及到数据库,好久都没写存储过程啦,有些基本的方法都忘记啦,从今天开始补上。

先来一个实例也就是存储过程的基本写法,在这里只强调实战就不去强调太多的语法和基础知识。

例一 传入一个参数@username,判断用户是否存在

CREATE PROC IsExistUser

(

  @ username varchar(20),

  @IsExisTheUser varchar(25) OUTPUT --输出参数

)

as

SELECT @IsExisTheUser = count(username)

FROM USERS

WHERE username = @username

GO

例2  存储过程结合事务的例子:添加一个用户,涉及到两个表,一个永固资料表,一个密码表:

增加用户

CREATE PROC  AddUser

(

  @username varchar(20),

  @passwords varchar(18),--密码

  @email varchar(100),--邮箱

  @qq varchar(11), -- QQ号码

  @imageid int -- 头像

)

as

-- 设置NOCOUNT为ON,使不再返回统计信息(存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。)

SET NOCOUNT ON

DECLARE  @CurrentError int

-- 创建事务,插入数据到两个表

BEGIN TRANSACTION

--创建用户信息

INSERT INTO user(username,email,qq,imageid)

VALUES(@USERNAME,@email,@qq,@imageid)

select @CurrentError = @@Error

IF @CurrentError != 0

BEGIN

GOTO ERROR_HANDLER

END

--创建用户密码

INSERT INTO Signon(username,[password])

VALUES(@username,@passwords)

IF @CurrentError != 0

 BEGIN

GOTO ERROR_HANDLER

END

--结束事务

COMMIT TRANSACTION

--恢复 NOCOUNT设置为OF

SET NOCOUNT OFF

--返回0表示成功,其他则为失败

RETURN 0

-- 错误处理
ERROR_HANDLER:
ROLLBACK TRANSACTION
SET NOCOUNT OFF
RETURN @CurrentError
GO



(责任编辑:IT)
------分隔线----------------------------