关于存储过程事务,返回值,变量声明以及执行方法

      Sql存储过程是一个非常有用的东西,我们常需要在执行完一个储存过程后知道执行的结果,所以我们可以在存储过程中定义变量来告诉我们返回状态和执行信息

      set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


-- =============================================
-- Author:  <Author,>
-- Create date: <Create Date,,2010-5-22>
-- Description: <Description,,插入用户>
-- =============================================
ALTER PROCEDURE [dbo].[Insert_User]
 -- Add the parameters for the stored procedure here
 @Account  VARCHAR(100)='',--名称
 @NickName VARCHAR(100)='',--昵称
 @UID BIGINT =0,--UID
 @PassWord VARCHAR(32)='',--密码
 @EMAIL VARCHAR(50)='',--邮箱
 @Status TINYINT =0,--类别
 @UseStatus TINYINT =0,--状态
 @RoleID SMALLINT =0--角色
AS
BEGIN TRANSACTION roll_back
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 SAVE TRANSACTION roll_back
 declare @return_value int
 declare @return_message varchar(50)
 IF NOT EXISTS (SELECT Account FROM dbo.UserBase WHERE Account=@Account OR NickName=@NickName)
 BEGIN  
  INSERT INTO dbo.UserBase(Account,PassWord,NickName,UID)
    VALUES(@Account,@PassWord,@NickName,@UID)
  INSERT INTO dbo.UserLimite(UID,Status,RoleID,UseStatus)
    VALUES(@UID,0,@RoleID,0)
  INSERT INTO dbo.UserExpand(UID,NAME,EMAIL)
    VALUES(@UID,@NickName,@EMAIL)
  set @return_value=1
  set @return_message='操作成功'
  IF(@@ERROR<>0)
  BEGIN
   set @return_value=0
   set @return_message='操作失败'
   ROLLBACK TRANSACTION roll_back
  END
  IF(@@ERROR>0)
  BEGIN
   set @return_value=0
   set @return_message='操作失败'
   ROLLBACK TRANSACTION roll_back
  END
 END
 ELSE
 BEGIN
  set @return_value=0
  set @return_message='已有此用户名称或昵称'
  RAISERROR ('已有此用户名称或昵称!', -- Message text.
      16, -- Severity.
      1 -- State.
      );
 END
 SELECT @return_value IsSuccess,@return_message Message
 commit TRANSACTION

 

如果执行储存过程,就是下面这行代码

EXEC dbo.Insert_User 'AA1','AA1','125','0000','174510355@qq.com','0','0','0'

结果如下图

返回结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值