Java SPs and Oracle Objects
Date: Thu, 23 Mar 2000 12:04:59 -0000
Message-ID: <QKnC4.288$%X3.6891_at_news1-hme0>
All,
I am trying to return a VARRAY of Oracle Objects from within a Java stored procedure and am not having much success.
I have created the Java classes to match the Oracle Objects using JPub, so the Java class matches the Oracle object.
When I try and create an ArrayDescriptor, I get a java.sql.SQLException Fail to construct descriptor: Unable to resolve type: "SYS.CASEINFO"
Java:
--snip--
public static void GetCases(java.lang.Object caseDetails[])
throws SQLException, ClassNotFoundException, IOException {
... ... ... OracleConnection conn = (OracleConnection) newOracleDriver().defaultConnection();
Dictionary map = conn.getTypeMap(); map.put(CaseInfo._SQL_NAME, Class.forName("CaseInfo")); CaseInfo javaCase[] = new CaseInfo[maxItems]; for (int index = 0; index < maxItems; index++) { //javaCase[index] = new JavaCase(_oracleCaseInfo, stringTok.nextToken()); javaCase[index] = new CaseInfo(stringTok.nextToken()); }
// The following line gives the 'unable to resolve type "SYS.CASEINFO"' error
ArrayDescriptor arrayDesc = ArrayDescriptor. createDescriptor(CaseInfo._SQL_NAME, conn); oracle.sql.ARRAY oArray = new ARRAY(arrayDesc, conn, javaCase); retObject[0] = oArray;
}
--snip--
Oracle
--snip--
CREATE OR REPLACE TYPE CaseInfo AS OBJECT (
KeyData VARCHAR2(128), Name VARCHAR2(128), Description VARCHAR2(128) );
/
CREATE OR REPLACE TYPE Cases AS VARRAY(50) OF CaseInfo;
/
CREATE OR REPLACE PACKAGE StaffWare AS
PROCEDURE GetCases(swCases OUT SYS.Cases);
END STAFFWARE;
/
CREATE OR REPLACE PACKAGE BODY StaffWare AS
PROCEDURE GetCases(swCases OUT SYS.Cases) IS
LANGUAGE JAVA NAME 'StaffWare.GetCases(java.lang.Object[])';END STAFFWARE;
/
--snip--
Can anyone suggest what is wrong with the code ?
TIA,
Andrew Briers
Received on Thu Mar 23 2000 - 13:04:59 CET