Pessoal,
Criei um CallableStatement para chamar uma procedure que retorna dois parâmetros tipo OUT, mas na hora de recuperar esses parâmetros ocorreu o erro: INDICE DE COLUNA INVÁLIDO. Não entendi este erro porque executo a procedure através do método executeQuery() para poder pegar os dados no ResultSet e minha procedure retorna dois parâmetros então para recuperar estou usando o método getString(indexColumn) informando como índices as colunas 1 e 2. Se alguém puder ajudar, vejam o código abaixo, o erro esta ocorrendo nas linhas 11 e 12.
Chamada da procedure:
//CHAMADA DA PROCEDURE QUE BUSCA O NOME DO CLIENTE E A DESCRIÇÃO DA MÍDIA
CallableStatement cstmt;
try {
cstmt = getConnection().prepareCall("{CALL PR_BUSCARCLIENTEMIDIA(" + idClientep + ", " + idMidiap + ", " + "?, ?)}");
cstmt.setString(1, null);
cstmt.setString(2, null);
cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.registerOutParameter(2, Types.VARCHAR);
ResultSet rsRetorno = null;
rsRetorno = cstmt.executeQuery();
nomeCliente = rsRetorno.getString(1);
descricaoMidia = rsRetorno.getString(2);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
A procedure criada no oracle 10g:
[code]CREATE OR REPLACE PROCEDURE PR_BUSCARCLIENTEMIDIA(P_IDCLIENTE IN CLIENTELOCADORA.IDCLIENTE%TYPE, P_IDMIDIA IN MIDIALOCADORA.IDMIDIA%TYPE, R_NOMECLIENTE OUT CLIENTELOCADORA.NOMECLIENTE%TYPE, R_DESCRICAOMIDIA OUT MIDIALOCADORA.DESCRICAOMIDIA%TYPE)
IS
BEGIN
SELECT NOMECLIENTE INTO R_NOMECLIENTE
FROM CLIENTELOCADORA
WHERE IDCLIENTE = P_IDCLIENTE;
SELECT DESCRICAOMIDIA INTO R_DESCRICAOMIDIA
FROM MIDIALOCADORA
WHERE IDMIDIA = P_IDMIDIA;
END;[/code]