Hello Oracle Community,
I'm reaching out to seek insights and share an observation regarding the behavior of Remote Procedure Call (RPC) Signature Dependency Mode in Oracle Database, specifically in the context of changing procedure parameter data types within the same class.
Here's a brief overview of the scenario:
- I set the session to use signature dependency mode:
ALTER SESSION SET REMOTE_DEPENDENCIES_MODE = 'SIGNATURE';
I created a base procedure with a NUMBER data type parameter and a dependent procedure that calls this base procedure. Initially, everything worked as expected.
I then altered the base procedure, changing the parameter from NUMBER to FLOAT. According to Oracle documentation, since NUMBER and FLOAT are in the same data type class, this change should not affect the RPC signature.
Surprisingly, this alteration led to the invalidation of the dependent procedure, contrary to what the documentation suggested.
Here's a simplified version of the code used:
-- Initial setup with NUMBER data type
CREATE OR REPLACE PROCEDURE base_procedure (p_input IN NUMBER) IS
BEGIN
-- Procedure logic
END;
-- Dependent procedure calling the base procedure
CREATE OR REPLACE PROCEDURE dependent_procedure IS
BEGIN
base_procedure(1);
-- Additional logic
END;
-- Changing base procedure parameter to FLOAT
CREATE OR REPLACE PROCEDURE base_procedure (p_input IN FLOAT) IS
BEGIN
-- Updated procedure logic
END;
After this change, the dependent procedure was invalidated, which was unexpected based on the documentation.
I'm curious if anyone else has encountered this behavior or can provide insights into why a change within the same data type class leads to invalidation in signature dependency mode. Is this a known issue, or is there a specific explanation for this behavior? Additionally, any recommendations on managing such changes without causing invalidations would be greatly appreciated.
Looking forward to your thoughts and suggestions.
Best regards,
Ana