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;