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