Несколько скриптов для облегчения добавления ролей в бухгалтерии "ПАРУС"
- Смотрим роли по организации:
select RN,ROLENAME from parus.ROLES where rolename like '%N219%' and rolename not like 'dd%' order by rolename ;
- Добавление пользователю ролей по списку:
declare nrn number; cnt pls_integer; login_to varchar2(100); role_to number; type array_t is varray(4) of number; array1 array_t := array_t(412675597,14104312,15162844,8115887); begin login_to := 'USER_LOGIN_TO!!!'; for i in 1..array1.count loop role_to := array1(i); select count(*) into cnt from parus.userroles tt where tt.roleid=role_to and tt.authid=login_to; if cnt=0 then parus.P_USERROLES_BASE_INSERT(role_to, login_to, nrn); end if; end loop; end; commit;
- Добавление ролей по названию:
declare nrn number; cnt pls_integer; login_to varchar2(100); begin login_to := 'USER_LOGIN_TO!!!'; for i in (select RN,ROLENAME from parus.ROLES where (rolename like '%ДГПкаN110%' ) and rolename not like 'dd%' order by rolename ) loop select count(*) into cnt from parus.userroles tt where tt.roleid=i.RN and tt.authid=login_to; if cnt=0 then dbms_output.put_line('added for '||login_to||' '||i.ROLENAME); parus.P_USERROLES_BASE_INSERT(i.RN, login_to,nrn); end if; end loop; end; commit;
- Копирование всех ролей одного пользователя другому:
declare nrn number; cnt pls_integer; login_from varchar2(100); login_to varchar2(100); begin login_from := 'USER_LOGIN_FROM!!!'; login_to := 'USER_LOGIN_TO!!!'; for i in ( select * from parus.userroles t where t.authid=login_from) loop select count(*) into cnt from parus.userroles tt where tt.roleid=i.roleid and tt.authid=login_to; if cnt=0 then parus.P_USERROLES_BASE_INSERT(i.roleid,login_to,nrn); end if; end loop; end; commit;
- удаление роли:
select t.RN, t.ROLEID,t.AUTHID,r.ROLENAME from parus.userroles t, parus.ROLES r where t.ROLEID=r.RN and t.authid='USER_LOGIN_TO!!!' order by r.ROLENAME ; begin PARUS.P_USERROLES_BASE_DELETE(1762104080); end;