I created below procedure in oracle that references a package spec variable to ignore DML completely if it is set.
CREATE OR REPLACE PACKAGE PKG AS
G_VAR VARCHAR2(1) := 'N';
END PKG;
CREATE OR REPLACE PROCEDURE TEST_LOC_DATA_PRC(IN_KEY_VAL VARCHAR2, IN_VAL NUMBER)
IS
BEGIN
IF NVL(PKG.G_VAR, 'N') = 'N' THEN
INSERT INTO TEST_LOC_DATA (KEY_VAL, VAL) VALUES (IN_KEY_VAL, IN_VAL);
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
UPDATE TEST_LOC_DATA SET VAL = IN_VAL WHERE KEY_VAL = IN_KEY_VAL;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE || ' - ' || SQLERRM);
END TEST_LOC_DATA_PRC;
It works without any issues, as expected, when invoked in oracle
EXEC TEST_LOC_DATA_PRC('DEF',20);
Now in stored procedure transaction group I am invoking the same and getting β-6508 - ORA-06508: PL/SQL: could not find program unit being calledβ
Could someone explain the reason for this from ignition perspective?