例1 传入一个参数@username,判断用户是否存在 -------------------------------------------------------------------------------CREATE PROC IsExistUser(@username varchar(20),@IsExistTheUser varchar(25) OUTPUT--输出参数)asSELECT @IsExistTheUser = count(username)FROM usersWHERE username = @username GO 例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设置为OFFSET NOCOUNT OFF-- 返回0表示成功,其他则为失败RETURN 0-- 错误处理ERROR_HANDLER:ROLLBACK TRANSACTIONSET NOCOUNT OFFRETURN @CurrentErrorGO |