CORE/_install/GRANTS_FROM_APPS.sql
2022-03-06 22:39:00 +01:00

48 lines
1.5 KiB
SQL

--
-- EXECUTE FROM NEW SCHEMA
--
CREATE SYNONYM app FOR core.app;
CREATE SYNONYM app_actions FOR core.app_actions;
CREATE SYNONYM gen FOR core.gen;
CREATE SYNONYM recompile FOR core.recompile;
CREATE SYNONYM nav_top FOR core.nav_top;
--
-- GRANT ACCESS TO EXISTING OBJECTS TO CORE
--
SET SERVEROUTPUT ON SIZE 1000000
DECLARE
in_owner CONSTANT VARCHAR2(30) := 'DEMO';
in_user CONSTANT VARCHAR2(30) := 'CORE';
BEGIN
FOR t IN (
SELECT object_type, object_name
FROM all_objects
WHERE owner = in_owner
AND object_type IN ('TABLE', 'VIEW', 'PROCEDURE', 'FUNCTION', 'PACKAGE', 'SEQUENCE') -- TYPE?
ORDER BY object_type, object_name
) LOOP
IF t.object_type IN ('TABLE', 'VIEW') THEN
EXECUTE IMMEDIATE
'GRANT SELECT, UPDATE, INSERT, DELETE ON ' || in_owner || '.' || t.object_name || ' TO ' || in_user;
--
ELSIF t.object_type IN ('PROCEDURE', 'FUNCTION', 'PACKAGE') THEN
EXECUTE IMMEDIATE
'GRANT EXECUTE ON ' || in_owner || '.' || t.object_name || ' TO ' || in_user;
--
ELSIF t.object_type IN ('SEQUENCE') THEN
EXECUTE IMMEDIATE
'GRANT SELECT ON ' || in_owner || '.' || t.object_name || ' TO ' || in_user;
END IF;
--
IF t.object_type = 'PACKAGE' THEN
EXECUTE IMMEDIATE
'GRANT DEBUG ON ' || in_owner || '.' || t.object_name || ' TO ' || in_user;
END IF;
END LOOP;
END;
/