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)
由于工作中没有涉及到数据库,好久都没写存储过程啦,有些基本的方法都忘记啦,从今天开始补上。 先来一个实例也就是存储过程的基本写法,在这里只强调实战就不去强调太多的语法和基础知识。 例一 传入一个参数@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) |