Несколько скриптов для облегчения добавления ролей в бухгалтерии "ПАРУС"
- Смотрим роли по организации:
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;