SQL Procedure示例程序03


ALTER PROCEDURE [dbo].[AssignAreaRightToUsers] 
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	DECLARE @CustomerID                     varchar(50)

	DECLARE CustCurosr CURSOR FOR
		SELECT OID FROM tbl_customdata WHERE newflag=0

	OPEN CustCurosr
	FETCH NEXT FROM CustCurosr
		INTO @CustomerID
	WHILE @@FETCH_STATUS = 0
	BEGIN		
		exec [AssignAreaRightToUsersByOID] @CustomerID
		FETCH NEXT FROM CustCurosr
				INTO @CustomerID
	END	

	CLOSE CustCurosr
	DEALLOCATE CustCurosr	

END


ALTER PROCEDURE [dbo].[AssignAreaRightToUsersByOID] 
	@OID                    varchar(40)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	DECLARE @AreaID                        varchar(50)
	DECLARE @RAOID                         varchar(50)
	DECLARE @RIGHTEEOID                    varchar(50)   --用户ID

	--获取客户所属区域
	select @AreaID=tbl_saleorg_oid from tbl_customdata where oid =@OID
	PRINT '@AreaID=' + @AreaID

	--根据区域找到有该区域权限的的用户
	DECLARE MyCurosr CURSOR FOR
	SELECT DISTINCT OID,RIGHTEEOID FROM TBL_RIGHTACTION 
	WHERE OID
		IN(
			SELECT a.RAOID FROM TBLAREARIGHTS A, TBL_SALEORG B WHERE A.TBL_SALEORG_OID = B.OID 
			AND b.oid =@AreaID
			AND B.SOG_STATUS = 'USAGE' 
		)

	OPEN MyCurosr
	FETCH NEXT FROM MyCurosr
		INTO @RAOID,@RIGHTEEOID
	--给这些用户赋拥有这个客户的权限
	BEGIN TRY	
		BEGIN TRANSACTION 
		
		--先删除该客户对应的区域权限
		DELETE FROM TBLAREARIGHTS WHERE TBL_SALEORG_OID=lower(@OID) 

		WHILE @@FETCH_STATUS = 0
		BEGIN		
			PRINT '@RAOID=' + @RAOID
			PRINT '@RIGHTEEOID=' + @RIGHTEEOID		
			
			INSERT INTO TBLAREARIGHTS (TBL_SALEORG_OID,RAOID,ARS_RIGHTS) VALUES(lower(@OID),@RAOID,'Browse| | |')

			FETCH NEXT FROM MyCurosr
					INTO @RAOID,@RIGHTEEOID
		END
		UPDATE tbl_customdata SET newflag=1 WHERE oid = @OID		
		COMMIT TRANSACTION 
	END TRY
	BEGIN CATCH
		ROLLBACK TRANSACTION 	
	END CATCH

	CLOSE MyCurosr
	DEALLOCATE MyCurosr	

END




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值