sql server 存储过程 获取slect 结果集 游标

背景:

        项目在做完交接给用户的时候,需要同步原来系统数据库中的用户信息 在添加的时候不仅需要添加用户 还得给他们加权限 否则登录上去了 也使用不了  

解决方案:

根据用户表中的isMananger字段来给用户一个初期的角色   用户类型主要有 1:管理员,2:领导 3:老师 4:学生  

角色有 1:管理员  2:老师 3:学生  其中 用户类型为管理员的给 管理员角色   老师和学生的就还是老师或者学生的角色

一千来条记录 手动添加肯定不行 最后想到用存储过程来实现  

在存储过程中 通过select 语句 找出符合要求的记录  能后在根据isManager 来确定 角色编号 插入用户角色表

create procedure  addUserRole as
    begin
        declare @uid int
declare @isM int
declare @rid int;
  --声明游标cursor_name(cursor_name是个多行结果集)  
          DECLARE youbiao CURSOR FOR select id,isManager from users where id=1;
  open youbiao;
WHILE 1=1
BEGIN
FETCH NEXT FROM youbiao INTO @uid,@isM;
IF @@fetch_status!= 0 BREAK;
if @isM=1  set @rid=1;
else if @isM=2 set @rid=1;
else if @isM=3  set @rid=2;
else set @rid=3;
insert into user_role values(@uid,@rid);
--print @uid
END;
--关闭游标
  close youbiao;
  deallocate youbiao;-- 释放游标  否则在多次执行这个存储过程的时候会包 游标以存在的错误
    end;
GO


执行 存储过程:

exec addUserRole 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值