当前位置: 代码迷 >> 综合 >> sql server 存储过程 获取slect 结果集 游标
  详细解决方案

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

热度:13   发布时间:2024-01-20 02:55:52.0

背景:

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

解决方案:

根据用户表中的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 


  相关解决方案