私はあなたのコードを取得し、いくつかの小さな変更を加えて実行しました。
私の配列TYPEオブジェクトはこれです:
create or replace
TYPE TBL_ARRAY_VARCHAR2  AS TABLE OF VARCHAR2(80);
私のコードは次のようになります。
try {
        Connection con;
        Class.forName("oracle.jdbc.driver.OracleDriver");
        con = DriverManager.getConnection(
                "jdbc:oracle:thin:@myhost:1521:LX1120", user,
                password);
        ArrayDescriptor arrayDescriptor = ArrayDescriptor.createDescriptor(
                "TBL_ARRAY_VARCHAR2", con);
        ARRAY array = new ARRAY(arrayDescriptor, con, new String[] { "1",
                "2", "3" });
        Object oArray = array.getArray();
        System.out.println(oArray.getClass().getName());
        if (oArray instanceof String[]) {
            String[] oArrayString = (String[]) oArray;
            for (int i = 0; i < oArrayString.length; i++) {
                System.out.println(i + ":" + oArrayString[i]);
            }
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
実行すると次のように表示されます。
[Ljava.lang.String;
0:1
1:2
2:3
だから、あなたがやろうとしていることは何も悪いことではありません...
多くの異なるバージョンの Oracle と異なる Oracle JDBC ドライバーを使用した作業に基づいて、JDBC ドライバーのバージョンとデータベースのバージョンが一致していないと推測されますが、それは単なる推測です。私があなたなら、サーバーから JDBC ドライバーをコピーして、もう一度やり直します。名前は変わっていなくても、ドライバーの内容は変わる可能性があるので、名前を比較するだけでは十分ではないことに注意してください。
デビッド・ロルフ