CREATE OR REPLACE PACKAGE multdim -- Created by John Beresniewicz IS TYPE dim1_t IS TABLE OF VARCHAR2 (32767) INDEX BY BINARY_INTEGER; TYPE dim2_t IS TABLE OF dim1_t INDEX BY BINARY_INTEGER; TYPE dim3_t IS TABLE OF dim2_t INDEX BY BINARY_INTEGER; PROCEDURE setcell ( array_in IN OUT dim3_t, dim1_in PLS_INTEGER, dim2_in PLS_INTEGER, dim3_in PLS_INTEGER, value_in IN VARCHAR2 ); // testing C++ comments FUNCTION getcell ( array_in IN dim3_t, dim1_in PLS_INTEGER, dim2_in PLS_INTEGER, dim3_in PLS_INTEGER ) RETURN VARCHAR2; FUNCTION EXISTS ( array_in IN dim3_t, dim1_in PLS_INTEGER, dim2_in PLS_INTEGER, dim3_in PLS_INTEGER ) RETURN BOOLEAN; END multdim;
CREATE OR REPLACE PACKAGE BODY multdim IS PROCEDURE setcell ( array_in IN OUT dim3_t, dim1_in PLS_INTEGER, dim2_in PLS_INTEGER, dim3_in PLS_INTEGER, value_in IN VARCHAR2 ) IS BEGIN array_in(dim3_in )(dim2_in )(dim1_in) := value_in; END; FUNCTION getcell ( array_in IN dim3_t, dim1_in PLS_INTEGER, dim2_in PLS_INTEGER, dim3_in PLS_INTEGER ) RETURN VARCHAR2 IS BEGIN RETURN array_in(dim3_in )(dim2_in )(dim1_in); END; FUNCTION EXISTS ( array_in IN dim3_t, dim1_in PLS_INTEGER, dim2_in PLS_INTEGER, dim3_in PLS_INTEGER ) RETURN BOOLEAN IS BEGIN -- 11/2002 Manchester -- The value doesn't matter; what matters is whether -- this combination exists or not. IF array_in(dim3_in )(dim2_in )(dim1_in) IS NULL THEN RETURN TRUE; ELSE RETURN TRUE; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN FALSE ; END; END multdim;