Search notes:

Oracle PL/SQL

PL/SQL is Oracle's implementation of the SQL standard feature B128 (Routine language SQL).
collection type
execute immediate 'sql text' allows to execute dynamic SQL statements from PL/SQL.
$ORACLE_HOME/rdbms/admin/utlrp.sql recompiles all existing PL/SQL modules that were previously in an INVALID state, such as packages, procedures, and types.

Compile all PL/SQL objects in a given schema

The following anonymous block compiles PL/SQL objects in a given schema. It is intended to used with a selection critera in order to limit the objects that will be compiled.
A variant of this code snippet can also be used because calling dbms_utility.compile_schema from a PL/SQL object in the schema that should be compiled will block.
begin
   for obj in (select object_name name, object_type type from user_objects where object_type in ('TYPE', 'PACKAGE', 'PROCEDURE', 'FUNCTION')) loop
       begin
       
       execute immediate 'alter ' || obj.type || ' ' || obj.name || ' compile';
       exception when others then
           if sqlcode in (
              - 2311, -- cannot alter with COMPILE option a valid type with type or table dependents
              - 6545, -- PL/SQL: compilation error - compilation aborted
              -24344  -- success with compilation error
           ) then
              null;
           else
              dbms_output.put_line(sqlerrm);
              dbms_output.put_line('alter ' || obj.type || ' ' || obj.name || ' compile');
           end if;
       end;
   end loop;
end;
/

TODO

As per a comment in dbmspbt.sql and tracetab.sql, an ICD is a «call to an internal PL/SQL routine».
See also stdspec.sql.
dbms_session.reset_package frees the memory being used for caching the execution state of all packages used in current session.

See also

$ORACLE_HOME/rdbms/admin/dplsql.bsq creates PL/SQL related dynamic performance tables such as procedure$, source$, idl_char$, idl_ub2$, …
Loop statements
Inlining PL/SQL code
dbms_describe provides information about a PL/SQL object.
Conditional compilation
Embedded PL/SQL Gateway
The source code of PL/SQL objects can be queried from all_source. Errors from all_errors. See also errors and warnings in PL/SQL.
PL/Scope collects information about identifiers and SQL statements in PL/SQL source code.
It's possible to declare PL/SQL procedures and functions for the scope of an SQL statement with the with clause.
PL/SQL code can be obfuscated with $ORACLE_HOME/bin/wrap.
dba_object_size lists sizes of PL/SQL objects.
utPLSQL
Events 10928 and 10938.

Index