views:

622

answers:

1

Is it possible to create a java representation of a package-level oracle associative array. For example, given the following:

CREATE OR REPLACE PACKAGE MyPackage AS
    TYPE t_numbers IS TABLE OF NUMBER INDEX BY PLS_INTEGER;

I find I cannot write the following java:

ArrayDescriptor descriptor =
    ArrayDescriptor.createDescriptor("MyPackage.t_numbers", connection);

(throws a SQLException "Invalid name pattern").

What is the correct syntax for an ArrayDescriptor referencing a package-level associative array? Does such a thing even exist?

+3  A: 

See http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:3696816290928 and especially http://download-west.oracle.com/docs/cd/B10501_01/java.920/a96654/oci_func.htm#1017512 .

tuinstoel
Second link was spot on, thanks. To summarize - don't use ArrayDescriptor when referencing package-level associative arrays. Cast the callable statement to an OracleCallableStatement and use setPlsqlIndexTable. Doesn't support records, though...
Andy