I declared my types in the package header:
file_2.sql
CREATE OR REPLACE PACKAGE MY_UTILS
IS
TYPE VECTOR IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
TYPE MATRIX IS TABLE OF VECTOR INDEX BY PLS_INTEGER;
PROCEDURE PRINT_MATRIX(p_matrix IN MATRIX);
END MY_UTILS;
My print matrix procedure
PROCEDURE PRINT_MATRIX(p_matrix IN MATRIX) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('printing matrix..');
END PRINT_MATRIX;
The procedure PRINT_MATRIXmakes DBMS_OUTPUT.PUT_LINEprinting a matrix simple ; When I try to use mine MY_UTILS.PRINT_MATRIX(v_matrix), I get an error:
PLS-00306: invalid number or types of arguments when calling 'PRINT_MATRIX'
In my other file, .sqlI also declare the MATRIX type the same as in the package.
file_1.sql
set serveroutput ON;
DECLARE
TYPE VECTOR IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
TYPE MATRIX IS TABLE OF VECTOR INDEX BY PLS_INTEGER;
v_matrix MATRIX;
BEGIN
MY_UTILS.PRINT_MATRIX(v_matrix);
END;
source
share