ORA 00902 Invalid Datatype error when using CAST in PL/SQL Package
40530Dec 1 2010 — edited Dec 1 2010I am getting ORA-00902 Invalid Datatype error when using cast in the getEmpValues method (see code below) in the package that I created.
I am not sure what is causing error. Any help would be appreciated
CREATE OR REPLACE PACKAGE TEST.TEST_PKG AS
TYPE myTableType IS TABLE OF NUMBER;
TYPE REF_CURSOR IS REF CURSOR;
FUNCTION str2tbl( p_str IN VARCHAR2 )
RETURN myTableType;
PROCEDURE getContactValues(p_ParameterString IN VARCHAR2, p_Cursor1 OUT REF_CURSOR);
END TEST_PKG;
CREATE OR REPLACE PACKAGE BODY TEST.TEST_PKG AS
FUNCTION str2tbl( p_str IN VARCHAR2 )
RETURN myTableType
AS
l_str LONG default p_str || ',';
l_n NUMBER;
l_data myTableType := myTabletype();
BEGIN
LOOP
l_n := INSTR( l_str, ',' );
EXIT WHEN (nvl(l_n,0) = 0);
l_data.extend;
l_data( l_data.count ) := ltrim(rtrim(substr(l_str,1,l_n-1)));
l_str := substr( l_str, l_n+1 );
END LOOP ;
return l_data;
END;
/*
p_ParameterString is a string with the format like '3, 6, 8, 9'
*/
PROCEDURE getEmpValues(p_ParameterString IN VARCHAR2, p_Cursor1 OUT REF_CURSOR)
AS
BEGIN
OPEN p_Cursor1 FOR
SELECT *
FROM EMP
WHERE EMP_ID IN ( SELECT *
FROM THE ( SELECT CAST( TEST.TEST_PKG.str2tbl(p_ParameterString ) as myTableType ) from dual )
);
END getEmpValues;
END TEST_PKG;