Bom dia Pesssoal!!!
Tenho uma procedure no Oracle8i que me retorna um array de VARCHAR…
Mas quando tento executá-la no Java, me retorna o erro:
Conflito de Tipo de Parâmetro: sqlType=2003
quando executo a linha: stmt.registerOutParameter(2, OracleTypes.ARRAY, OracleTypes.VARCHAR);
Nunca fiz isso com procedure… somente com FUNCTION que me retorna cursor…
Segue abaixo a declaração da package/proc e o código java…
CREATE OR REPLACE PACKAGE pkg_teste IS
TYPE t_nome IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
PROCEDURE teste_proc (p_in IN VARCHAR2, p_nome OUT t_nome);
END pkg_teste;
/
CREATE OR REPLACE PACKAGE BODY pkg_teste IS
PROCEDURE teste_proc(p_in IN VARCHAR2, p_nome OUT t_nome) IS
BEGIN
p_nome(0) := ‘Nome 1’;
p_nome(1) := ‘Nome 2’;
END;
END pkg_teste;
/
no método java…
String proc = “{call pkg_teste.teste_proc(?,?)}”;
try {
conn = DBConnectionFactory.getInstance().getConnection();
stmt = (OracleCallableStatement) conn.prepareCall(proc);
stmt.registerOutParameter(2, OracleTypes.ARRAY, OracleTypes.VARCHAR);
stmt.setString(1, "");
stmt.execute();
} catch(… ) {}
Grato