ACE Director Alum Daniel Morgan, founder of Morgan's Library, is scheduling
complimentary technical Workshops on Database Security for the first 30
Oracle Database customers located anywhere in North America, EMEA, LATAM, or
APAC that send an email to
asra_us@oracle.com. Request a Workshop for
your organization today.
dbms_prvtrmie.append_boolean_arg(
sql_string IN OUT VARCHAR2,
field IN VARCHAR2,
value IN BOOLEAN,
default_value IN BOOLEAN,
prepend_comma IN BOOLEAN);
dbms_prvtrmie.append_string_arg(
sql_string IN OUT VARCHAR2
field IN VARCHAR2,
value IN VARCHAR2,
replace_quotes IN BOOLEAN,
double_quote IN BOOLEAN,
prepend_comma IN BOOLEAN);
dbms_prvtrmie.get_consumer_grp(
bjid IN NUMBER,
cg OUT sys.resource_consumer_group$);
This is the first time we have ever seen this behavior. Note that the data dictionary indicates that sys.resource_consumer_group$ is a PL/SQL record.
POSITION ARGUMENT_NAME IN_OUT DATA_TYPE TYPE
--------- -------------- ------- ------------- ----------------------------
1 objid IN NUMBER
2 cg OUT PL/SQL RECORD sys.resource_consumer_group$
but the compilation fails as shown here:
DECLARE
cgOut sys.resource_consumer_group$;
BEGIN
dbms_prvtrmie.get_consumer_grp(1, cgOut);
dbms_output.put_line(cgOut.name);
END;
/
cgOut sys.resource_consumer_group$;
*
ERROR at line 2:
ORA-06550: line 2, column 8:
PLS-00488: 'SYS.RESOURCE_CONSUMER_GROUP$' must be a type
ORA-06550: line 0, column 0:
PL/SQL: Compilation unit analysis terminated
and a query of dba_objects shows the object to be a table not a PL/SQL record.
So how the package is compiled and valid is a mystery left for the future.
dbms_prvtrmie.get_group_mappings(
mapping_rule OUT sys.resource_group_mapping$
mapping_rule_cursor_open IN OUT PL/SQL BOOLEAN,
mapping_rule_found OUT PL/SQL BOOLEAN);
DECLARE
mrule sys.resource_group_mapping$; -- again this is a table ... not a type
mrco BOOLEAN := TRUE;
mrfnd BOOLEAN;
BEGIN
dbms_prvtrmie.get_group_mappings(mrule, mrco, mrfnd);
END;
/
dbms_prvtrmie.get_obj_grants(
grantee_name OUT VARCHAR2,
grantor_name OUT VARCHAR2,
consumer_group OUT VARCHAR2,
grant_option OUT BINARY_INTEGER,
state IN OUT BOOLEAN);
Undocumented but while it appears to give the correct answer as shown in the demo at right ... returns FALSE when asked about sys.obj$ so it is not using "SYS_MANAGED" to mean owned by SYS.
dbms_prvtrmie.is_sys_managed(objname IN VARCHAR2) RETURN BOOLEAN;
BEGIN
IF dbms_prvtrmie.is_sys_managed('C##UWCLASS.SERVERS') THEN
dbms_output.put_line('T');
ELSE
dbms_output.put_line('F');
END IF;
END;
/ F
dbms_prvtrmie.wrap_with_error_handling(
sql_string IN/OUT VARCHAR2
error1 IN NUMBER,
error2 IN NUMBER,
error3 IN NUMBER,
error4 IN NUMBER,
error5 IN NUMBER,
all_errors IN BOOLEAN);
This is positively brilliant. It may be undocumented and unsupported but we plan to start using it in a lot of the code we write for maintenance purposes (not in applications).