java.sql.SQLException: Internal Error with oracle.sql.ARRAY getArray()
511346May 5 2006 — edited Feb 16 2011hi,
I am having having problems with the getArray() of oracle.sql.ARRAY.
Here are the details:
Oracle Database - 9.2.0.6. The JDBC driver used -10.2.0.1 jar.(the latest available).
I am calling a stored procedure from java, that has out param as a collection (VARRAY) of a user defined type.
The stored procedure works fine, if the user/schema used to connect,contains actual type, and i am able to extract the user defined object from the oracle.sql.ARRAY, via getArray().
But if i use a different user to connect which has public synonyms and execute rights to the actual type, i get the following error:
java.sql.SQLException: Internal Error
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.initCollElemTypeName(OracleTypeCOLLECTION.java:1026)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.getAttributeType(OracleTypeCOLLECTION.java:1056)
at oracle.jdbc.oracore.OracleNamedType.getFullName(OracleNamedType.java:110)
at oracle.jdbc.oracore.OracleTypeADT.createStructDescriptor(OracleTypeADT.java:2262)
at oracle.jdbc.oracore.OracleTypeADT.unpickle81(OracleTypeADT.java:1656)
at oracle.jdbc.oracore.OracleTypeUPT.unpickle81UPT(OracleTypeUPT.java:466)
at oracle.jdbc.oracore.OracleTypeUPT.unpickle81rec(OracleTypeUPT.java:416)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle81_imgBody_elems(OracleTypeCOLLECTION.java:979)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle81_imgBody(OracleTypeCOLLECTION.java:923)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle81(OracleTypeCOLLECTION.java:743)
at oracle.jdbc.oracore.OracleTypeCOLLECTION._unlinearize(OracleTypeCOLLECTION.java:242)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unlinearize(OracleTypeCOLLECTION.java:208)
at oracle.sql.ArrayDescriptor.toJavaArray(ArrayDescriptor.java:963)
at oracle.sql.ARRAY.getArray(ARRAY.java:370)
The problem is happening because we have 2 different users to connect to the database. one is the dba user, which contains all the types, packages and other one the application user, which we are supposed to use, to connect via java. This application user does have access to types via public synonym, but it gives the above mentioned error.
Please help :(.
Regards,
Gaurav.