java .sql.SQLException:
I am trying to pass an oracle array into a java function using oracle.sql.ARRAY .I m passing this data using a PL/SQL procedure for calling java function (in oracle)(java in oracle).Whenever I try to do this I get the following exception for array datatype:-
java.sql.SQLException:Fail to convert into internal representation: invalid data conversion.
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java)
at oracle.sql.SQLUtil.SQLToJava(SQLUtil.java)
at oracle.sql.SQLUtil.SQLToJava(SQLUtil.java)
at oracle.jdbc.kprb.Conversions.makeOne(Conversions.java)
My java code is:package test.inside;
import oracle.sql.*;
import java.sql.SQLException;
public class ArrayTest
{
public static void fun_array(oracle.sql.ARRAY a) throws SQLException
{
try
{
System.out.println("String is"+a);
String [] sa = (String[]) a.getArray();
String s = new String();
for (int i = 0; i < sa.length; i++)
{
s = s.concat(sa);
}
System.out.println("String is"+s);
}catch (SQLException e) {System.err.println(e.getMessage());}
}
public static void fun(oracle.sql.CHAR c ) throws SQLException
{
System.out.println("Character is " + c);
}
public static void main(String s[])
{
ArrayTest at = new ArrayTest();
}
}
My PL/SQL package for invoking java is:CREATE OR REPLACE PACKAGE "ARRAYTEST" AS
PROCEDURE fun(Param1 VARCHAR2)
AS
LANGUAGE java
NAME 'test.inside.ArrayTest.fun(oracle.sql.CHAR)';
PROCEDURE fun_array(Param1 test_varray)
AS
LANGUAGE java
NAME 'test.inside.ArrayTest.fun_array(oracle.sql.ARRAY)';
PROCEDURE main(Param1 VARCHAR2)
AS
LANGUAGE java
NAME 'test.inside.ArrayTest.main(java.lang.String[])';
end;
I m passing test_varray which is a varray of varchar2 to java function as follows:declare
a test_varray:= test_varray('anvcb','bnvb','cyrwy');
begin
dbms_java.set_output(1000);
ArrayTest.fun('niha');
ArrayTest.fun_array(a);
end;
Please tell me why I m getting exception when I m trying to pass an array .

