例1 [email protected],判断用户是否存在
-------------------------------------------
CREATE PROC IsExistUser(@username varchar(20),@IsExistTheUser varchar(25) OUTPUT--输出参数)asSELECT @IsExistTheUser = count(username)FROM usersWHERE username = @usernameGO
例2 存储过程结合事务的一个例子:添加用户,涉及到两个表,一个用户资料表,一个密码表:
增加用户
-------------------------------------------
create procedure AddUser(@username varchar(20),--用户名@passwords varchar(18),--密码@email varchar(100),--邮箱@qq varchar(11),--QQ号码@imageid int--头像)as
-- 设置NOCOUNT为ON,使不再返回统计信息(存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。)
SET NOCOUNT ONDECLARE @CurrentError int
-- 创建事务, 插入数据到2个表
BEGIN TRANSACTION
-- 创建用户信息
INSERT INTO users (username, email, qq, imageid)VALUES (@username, @email, @qq, @imageid)select @CurrentError = @@ErrorIF @CurrentError != 0BEGINGOTO ERROR_HANDLEREND
-- 创建用户密码
INSERT INTO Signon (username, [password])VALUES (@username, @passwords)select @CurrentError = @@ErrorIF @CurrentError != 0BEGINGOTO ERROR_HANDLEREND
-- 结束事务
COMMIT TRANSACTION
-- 恢复NOCOUNT设置为OFF
SET NOCOUNT OFF
-- 返回0表示成功,其他则为失败
RETURN 0
-- 错误处理
ERROR_HANDLER:ROLLBACK TRANSACTIONSET NOCOUNT OFFRETURN @CurrentErrorGO