4.3 SCAN Procedure
This procedure generates the object dependency report.
It scans the application or a page in the application for all database objects that it depends on (including tables, views, procedures, functions, packages, and synonyms) whether these dependencies are in forms, reports, PL/SQL regions, conditions, plugins, or elsewhere.
The results are visible by querying the following views:
APEX_USED_DB_OBJECT_COMP_PROPS
- all application SQL and PL/SQL foundAPEX_USED_DB_OBJECTS
- all database objects referred toAPEX_USED_DB_OBJ_DEPENDENCIES
- all dependencies found
In the event that a fragment of SQL or PL/SQL is invalid (for example, a required object is missing), the dependencies are not detected. The compilation error message may be queried in the APEX_USED_DB_OBJECT_COMP_PROPS
view.
The results of the scan are saved until:
- a new scan initiates
apex_app_object_dependency.clear_cache
is called- the Oracle APEX instance is upgraded
PL/Scope
The scanner only detects dependencies specific to functions and procedures within packages compiled with PL/Scope. Before starting the scan, you may choose to compile the schema(s) of interest with PL/Scope:
alter session set plscope_settings='identifiers:all';
exec sys.dbms_utility.compile_schema(user, true);
alter session set plscope_settings='identifiers:none';
This may take some time to run depending on the size of the codebase.
For packages not compiled with PL/Scope, the scanner only detects a dependency on the package; but the report does not list each method referenced within it.
Requirements
The application owner schema requires CREATE PROCEDURE
privilege.
Known Limitations
- Does not detect dependencies within SQL generated dynamically (such as using execute immediate or dbms_sql).
- Does not detect dependencies arising from Function Returning SQL or Function Body Returning SQL (the functions are not executed so the code that they generate is not scanned for dependencies).
- Does not detect recursive dependencies (other database objects referred to by the objects detected in the scan). Tip: Recursive dependencies may be found by querying the
USER_DEPENDENCIES
database view. - Does not detect dependencies in Supporting Object scripts, including those that may arise in Required Object Names, Install Scripts, Upgrade Scripts, or Deinstall Scripts.
Syntax
APEX_APP_OBJECT_DEPENDENCY.SCAN (
p_application_id IN NUMBER,
p_page_id IN NUMBER DEFAULT NULL,
p_options IN VARCHAR2 DEFAULT c_option_all )
Parameters
Parameter | Description |
---|---|
p_application_id |
ID of the application to be analyzed. |
p_page_id |
Set this parameter to analyze a single page of an application. |
p_options |
Options include:
|
Example
BEGIN
apex_app_object_dependency.scan ( p_application_id => :app_id );
END;
Parent topic: APEX_APP_OBJECT_DEPENDENCY