73 lines
1.9 KiB
SQL
73 lines
1.9 KiB
SQL
/**
|
|
* Create Role _ClientAccess and _OrgAccess
|
|
* (assumes, that a role has only one organization (which should be the case)
|
|
*/
|
|
DECLARE
|
|
CURSOR CUR_Role IS
|
|
SELECT *
|
|
FROM AD_Role;
|
|
--
|
|
v_Client VARCHAR2(60);
|
|
v_Org VARCHAR2(60);
|
|
v_ID VARCHAR2(20);
|
|
v_AD_Client_ID NUMBER(10);
|
|
v_AD_Org_ID NUMBER(10);
|
|
BEGIN
|
|
-- For each Role
|
|
FOR r IN CUR_Role LOOP
|
|
DBMS_OUTPUT.PUT_LINE(r.Name);
|
|
v_Client := r.ClientList;
|
|
v_Org := r.OrgList;
|
|
WHILE (LENGTH(v_Client) > 0) LOOP
|
|
-- Get ID
|
|
IF (INSTR(v_Client,',') = 0) THEN
|
|
v_ID := v_Client;
|
|
ELSE
|
|
v_ID := SUBSTR(v_Client,1,INSTR(v_Client,',')-1);
|
|
END IF;
|
|
v_AD_Client_ID := TO_NUMBER (v_ID);
|
|
DBMS_OUTPUT.PUT_LINE(' Client=' || v_AD_Client_ID);
|
|
|
|
INSERT INTO AD_ROLE_ClientACCESS
|
|
(AD_ROLE_ID, AD_CLIENT_ID, AD_ORG_ID,
|
|
ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY)
|
|
VALUES
|
|
(r.AD_ROLE_ID, v_AD_CLIENT_ID, 0,
|
|
'Y', SysDate, r.CREATEDBY, SysDate, r.UPDATEDBY);
|
|
|
|
-- Next
|
|
IF (INSTR(v_Client,',') = 0) THEN
|
|
v_Client := '';
|
|
ELSE
|
|
v_Client := SUBSTR(v_Client,INSTR(v_Client,',')+1);
|
|
END IF;
|
|
END LOOP;
|
|
WHILE (LENGTH(v_Org) > 0) LOOP
|
|
-- Get ID
|
|
IF (INSTR(v_Org,',') = 0) THEN
|
|
v_ID := v_Org;
|
|
ELSE
|
|
v_ID := SUBSTR(v_Org,1,INSTR(v_Org,',')-1);
|
|
END IF;
|
|
v_AD_Org_ID := TO_NUMBER (v_ID);
|
|
DBMS_OUTPUT.PUT_LINE(' Client=' || v_AD_Client_ID || ' Org=' || v_AD_Org_ID);
|
|
|
|
INSERT INTO AD_ROLE_OrgACCESS
|
|
(AD_ROLE_ID, AD_CLIENT_ID, AD_ORG_ID,
|
|
ISACTIVE, CREATED, CREATEDBY, UPDATED, UPDATEDBY)
|
|
VALUES
|
|
(r.AD_ROLE_ID, v_AD_CLIENT_ID, v_AD_Org_ID,
|
|
'Y', SysDate, r.CREATEDBY, SysDate, r.UPDATEDBY);
|
|
|
|
-- Next
|
|
IF (INSTR(v_Org,',') = 0) THEN
|
|
v_Org := '';
|
|
ELSE
|
|
v_Org := SUBSTR(v_Org,INSTR(v_Org,',')+1);
|
|
END IF;
|
|
END LOOP;
|
|
|
|
END LOOP;
|
|
COMMIT;
|
|
END;
|