Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ORA 00902 Invalid Datatype error when using CAST in PL/SQL Package

40530Dec 1 2010 — edited Dec 1 2010
I 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;
This post has been answered by 6363 on Dec 1 2010
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 29 2010
Added on Dec 1 2010
3 comments
768 views