-- -----------------------------------------------------------------------------------
-- File Name : http://www.oracle-base.com/dba/script_creation/role_ddl.sql
-- Author : Tim Hall
-- Description : Displays the DDL for a specific role.
-- Call Syntax : @role_ddl (role)
-- Last Modified: 28/01/2006
-- -----------------------------------------------------------------------------------
set long 1000000 linesize 1000 pagesize 0 feedback off trimspool on verify off
column ddl format a1000
begin
dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', true);
dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'PRETTY', true);
end;
/
variable v_role VARCHAR2(30);
exec :v_role := upper('&1');
select dbms_metadata.get_ddl('ROLE', r.role) AS ddl
from dba_roles r
where r.role = :v_role
union all
select dbms_metadata.get_granted_ddl('ROLE_GRANT', rp.grantee) AS ddl
from dba_role_privs rp
where rp.grantee = :v_role
and rownum = 1
union all
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT', sp.grantee) AS ddl
from dba_sys_privs sp
where sp.grantee = :v_role
union all
select dbms_metadata.get_granted_ddl('OBJECT_GRANT', tp.grantee) AS ddl
from dba_tab_privs tp
where tp.grantee = :v_role
and rownum = 1
/
set linesize 80 pagesize 14 feedback on trimspool on verify on