--change to signature mode
ALTER SESSION SET REMOTE_DEPENDENCIES_MODE = 'SIGNATURE'
Statement processed.
--first setup
CREATE OR REPLACE PACKAGE referenced_pkg IS
PROCEDURE referenced_procedure (pi_value IN number);
END;
Package created.
CREATE OR REPLACE PACKAGE BODY referenced_pkg IS
PROCEDURE referenced_procedure (pi_value IN number) IS
BEGIN
dbms_output.put_line('referenced_procedure');
END;
END;
Package Body created.
CREATE OR REPLACE PROCEDURE dependent_procedure IS
BEGIN
dbms_output.put_line('dependent_procedure');
referenced_pkg.referenced_procedure(5);
END;
Procedure created.
--all objects are valid
SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
FROM USER_OBJECTS
WHERE OBJECT_NAME IN ('DEPENDENT_PROCEDURE', 'REFERENCED_PKG')
OBJECT_NAME | OBJECT_TYPE | STATUS | DEPENDENT_PROCEDURE | PROCEDURE | VALID | REFERENCED_PKG | PACKAGE | VALID | REFERENCED_PKG | PACKAGE BODY | VALID |
---|
BEGIN
dbms_output.put_line('start');
dependent_procedure;
dbms_output.put_line('end');
dbms_output.put_line('-----------------------');
END;
Statement processed.
start
dependent_procedure
referenced_procedure
end
-----------------------
--change the data type of a parameter to another data type in the same class (from 'number' to 'integer')
CREATE OR REPLACE PACKAGE referenced_pkg IS
PROCEDURE referenced_procedure (pi_value IN integer);
END;
Package created.
CREATE OR REPLACE PACKAGE BODY referenced_pkg IS
PROCEDURE referenced_procedure (pi_value IN integer) IS
BEGIN
dbms_output.put_line('referenced_procedure');
END;
END;
Package Body created.
--the dependent_procedure got invalid although the Oracle documentation says: 'Changing the data type of a parameter to another data type in the same class does not change the RPC signature, but changing the data type to a data type in another class does.
SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
FROM USER_OBJECTS
WHERE OBJECT_NAME IN ('DEPENDENT_PROCEDURE', 'REFERENCED_PKG')
OBJECT_NAME | OBJECT_TYPE | STATUS | DEPENDENT_PROCEDURE | PROCEDURE | INVALID | REFERENCED_PKG | PACKAGE | VALID | REFERENCED_PKG | PACKAGE BODY | VALID |
---|