Example 1: Removing a module from an Oracle Rdb database
SQL> DROP MODULE employee_salary;
Example 2: Observing the DROP MODULE ... CASCASE action
This example demonstrates that dependencies may exists between
the module being dropped and other database objects such as
routines and triggers. The script uses SET FLAGS with the WARN_
INVALID option so that the database administrator is informed
of any affected objects. In this case a rollback is used to
undo the DROP MODULE ... CASCADE as the affects might damage
the application environment.
SQL> start transaction read write;
SQL>
SQL> create module FIRST_MODULE
cont> function GET_TIME ()
cont> returns TIME (2);
cont> return CURRENT_TIME (2);
cont> end module;
SQL>
SQL> create module SECOND_MODULE
cont> procedure PRINT_TRACE (in :arg varchar(40));
cont> begin
cont> trace GET_TIME(), ': ', :arg;
cont> end;
cont> end module;
SQL>
SQL> create table SAMPLE_TABLE
cont> (ident integer,
cont> descr char(100));
SQL> create trigger SAMPLE_TABLE_TRIGGER
cont> after insert on SAMPLE_TABLE
cont> (trace GET_TIME(), ': ', SAMPLE_TABLE.descr)
cont> for each row;
SQL>
SQL> commit;
SQL>
SQL> set flags 'warn_invalid';
SQL> drop module FIRST_MODULE restrict;
%RDB-E-NO_META_UPDATE, metadata update failed
-RDMS-E-OBJ_INUSE, object "GET_TIME" is referenced by SAMPLE_TABLE_TRIGGER. (usage: Trigger)
-RDMS-E-MODNOTDEL, module "FIRST_MODULE" has not been deleted
SQL> drop module FIRST_MODULE cascade;
~Xw: Trigger "SAMPLE_TABLE_TRIGGER" marked invalid
~Xw: Routine "PRINT_TRACE" marked invalid
SQL>
SQL> rollback;