存储过程中事务try catch 例子

CREATE PROCEDURE [dbo].[ProcAccountManagerAssignCompany]
	--用户账号基本信息表中所需字段
	@UserName NVARCHAR(50),    --用户登录的账户名称
	@UserPwd NVARCHAR(50),    --用户登录的密码
	@AssignUserID INT,    --分配此用户的管理员ID
	@ParentId INT,    --父ID
	
	--企业基本信息表中所需字段
	@AddUser INT,   --添加者ID
	@Name NVARCHAR(80),	--公司名称
	@Address NVARCHAR(80),--公司地址
	@Tel VARCHAR(15),--联系电话
	@Email VARCHAR(50),--邮箱
	@PostCode VARCHAR(10)--邮政编码
	
AS
BEGIN
	DECLARE @isExist INT,@isExistTwo INT,@CompanyExist INT,@FrameworkExist INT
	SET @isExist = 0 SET @isExistTwo = 0 SET @CompanyExist=0
	SELECT @isExist=COUNT(*) FROM UserAccountBasicInfo WHERE UserName=@UserName
	SELECT @isExistTwo=COUNT(*) FROM CompanyBasicInfo WHERE AdminUserName=@UserName
	SELECT @CompanyExist =COUNT(*) FROM CompanyBasicInfo WHERE [Name]=@Name
	
	IF @isExist > 0
		SELECT -100 --返回 -100	说明用户账号基本信息表中已存在用户名
	ELSE IF @isExistTwo>0
		SELECT -200 --返回 -200 说明企业信息表中用户名已存在
	ELSE IF @CompanyExist >0
		SELECT -300 --返回 -300  说明企业名称已经存在
	ELSE -- 执行插入
	BEGIN
		BEGIN TRAN
		BEGIN TRY
		--1.往UserAccountBasicInfo表中插入账号信息
		INSERT INTO UserAccountBasicInfo
		(
			[UserName],
			[UserPwd],
			[AssignUserID],
			[AssignTime],
			[LastUpdateTime],
			[IsDeleted],
			[ParentId]
		)
		VALUES
		(
			@UserName,
			@UserPwd,
			@AssignUserID,
			GETDATE(),
			GETDATE(),
			0,
			@ParentId
		)
		--2.往CompanyBasicInfo表中插入企业信息
		INSERT INTO CompanyBasicInfo
		(
			[AdminUserName],
			[Name],
			[Address],
			[Tel],
			[Email],
			[PostCode],
			[IsDeleted],
			[AddTime],
			[AddUser],
			[UpdateTime],
			[UpdateUser]
		)
		VALUES
		(
			@UserName,
			@Name,
			@Address,
			@Tel,
			@Email,
			@PostCode,
			0,
			GETDATE(),
			@AddUser,
			GETDATE(),
			@AddUser
		)
		
		--3.往组织架构表中插入数据
		DECLARE @CompanyId INT
		SELECT	@CompanyId = IDENT_CURRENT( 'CompanyBasicInfo' ) 
		INSERT INTO CompanyFramework
		(
			[CompanyID],
			[Name],
			[ParentID],
			[IsDeleted]
		)
		VALUES
		(
			@CompanyID,
			@Name,
			0,
			0
		)
		
		
		COMMIT
		END TRY
		BEGIN CATCH
			ROLLBACK
		END CATCH
    END
END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安得权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值