Erro ao tentar retornar um cursor pela Stored Procedure

1 resposta
jaboot

Olá pessoal

Em uma base de dados Oracle, estou tentando retornar um Cursor. Para falar a verdade, nem sei se isso é possível, mas está me retornando NullPointerException toda vez.

Se puderem me ajudar, agradeço. Segue o código:
package br.com.xxxx.xxx.xxxx;

import java.sql.CallableStatement;
import java.sql.ResultSet;

import oracle.jdbc.OracleTypes;

public class MontaPerfil {

private Conexao conn;
private CallableStatement pstmt = null;
public String sql = null;
public ResultSet rs = null;

protected ResultSet buscaPerfil(int codFuncionario,
					      int codSistema,
					      int codServico){

		this.conn = new Conexao();
		conn.conecta();
		
		sql = "call PERFIL_DE_ACESSO.buscaPerfil(?,?,?,?)";
		try{
			pstmt = conn.getConn().prepareCall(sql);
			pstmt.setInt(1,codFuncionario);
			pstmt.setInt(2,codSistema);
			pstmt.setInt(3,codServico);
			pstmt.registerOutParameter(4, OracleTypes.CURSOR); // retorna um cursor
			pstmt.execute();
			rs = pstmt.getResultSet();

		}catch(Exception e){
			System.out.println("ERRO 200: " + e.toString());
			e.printStackTrace();
		}finally{
			conn.desconecta();			
		}
		
		return rs;
	}
}

Abraços

1 Resposta

jaboot

Galera...

desculpem, eu mesmo consegui encontrar uma solução aqui vai o código:
package br.com.xxx.xxx.xxx;

import java.sql.CallableStatement;
import java.sql.ResultSet;

import oracle.jdbc.OracleTypes;

public class MontaPerfil {

	private Conexao conn;
	private CallableStatement pstmt = null;
	public String sql = null;
	public ResultSet rs = null;

	protected ResultSet buscaPerfil(int codFuncionario,
					   			 	int codSistema,
					   			 	int codServico){

		this.conn = new Conexao();
		conn.conecta();

		sql = "call PERFIL_DE_ACESSO.buscaPerfil(?,?,?,?)";
		try{
			System.out.println("Entrou 2");
			pstmt = conn.getConn().prepareCall(sql);
			pstmt.setInt(1,codFuncionario);
			pstmt.setInt(2,codSistema);
			pstmt.setInt(3,codServico);
			pstmt.registerOutParameter(4, OracleTypes.CURSOR); // retorna um cursor
			pstmt.execute();
			
			rs = (ResultSet) pstmt.getObject(4);

		}catch(Exception e){
			System.out.println("ERRO 200: " + e.toString());
			e.printStackTrace();
		}

		return rs;
	}
}

Fonte: http://yoprogramador.vampisol.com/index.php?title=pl_sql_oracle_desde_java&more=1&c=1&tb=1&pb=1

Criado 3 de julho de 2006
Ultima resposta 3 de jul. de 2006
Respostas 1
Participantes 1