Chamando procedure Oracle via Java

Boa tarde

Pessoal eu tenho que chamar uma procedure do oracle pela aplicação java que estou desenvolvendo, mas fiz varios testes e não consigui realizar essa tarefa, minha procedure trabalha com dois dados de entrada: email e senha, e devolve 4 valores, segue a descrição dela :

  • p_USUARIO_LOGIN / VARCHAR2(150) / INPUT

  • p_USUARIO_SENHA / VARCHAR2(10) / INPUT

  • p_USUARIO_ID / NUMBER / OUT

  • p_USUARIO_TIPO_ID / NUMBER / OUT

  • p_USUARIO_NOME / VARCHAR(60) / OUT

  • p_MSG / VARCHAR2 / OUT

Será que alguem pode me ajudar a chamar ela pela aplicação…obrigado

valeu

Caio, este topico vai me ajudar muito tambem. preciso da informação, estou amarrado em uma aplicação neste ponto.

...
CallableStatement cs = Connection.prepareCall("{ call seu_stored_procedure() }");
...

victorwss, vc pode dar um exemplo.

eu tenho esse metodo em meu bean:


public String insereWebServiceNfe() {

		try {

			Session s = HibernateUtil.getSession();
			System.out.println("Inserindo WebService...");

			NfeWebService nws = new NfeWebService();

			nws.setID_WEBSERVICE(this.idWebService);
			nws.setID_UF(this.idUf);
			nws.setNM_SERVICO(this.nmServico);
			nws.setURL(this.url);

			Transaction t = s.beginTransaction();

			s.save(nws);
			t.commit();
			s.close();
			System.out.println("WebService Feito.");

			return "okInsereWebServiceNfe";

		} catch (Exception e) {

			System.out.println(e.getMessage());

			return "erroInsereWebServiceNfe";

		}
	}

apos inserir o usuario com o hibernate, onde implemento o CallableStatement ?

obrigado desde já

Boa tarde

Tudo bem mateus, pelo que vi meu problema é mais simples que o seu, eu quero apenas passar parametros para procedure e conseguir ler os valores de retorno dela, tipo ela vai me retornar um resultset, mas esta dando problema na execução do método… alguem ai teria um exemplo desse tipo (Obs: O banco de dados é o oracle).

Valeu…

Tudo bem Caio.
Entao meu banco tb é Oracle.
Eu apenas preciso executar a SP que popula o campo id de minhas tabelas das tabelas.
Na verdade tabelas da empresa né. Pq por mim seria tudo viu sequence.rsss

[],s

Procurando no GUJ e no Google, achei isso:

http://www.guj.com.br/posts/list/82806.java

http://exampledepot.com/egs/java.sql/CallFunction.html

Vejam se serve…

Vou disponibilizar um código que chama uma procedure que recebe dois parametros um de entrada e outro de saida

CallableStatement cs = conexao.prepareCall( "{ call main(?,?) }" );
cs.setString(1, "VALOR DE ENTRADA");
// registro de saida
cs.registerOutParameter(2, OracleTypes.VARCHAR );
cs.execute();

String retorno = cs.getString(2);

Boa tarde

Então, eu fiz como você falou no exemplo mas não funcionou o erro que apareceu foi o seguinte:

ORA-06550: line 1, column 7:
PLS-00201: identifier ‘SP_TPT_AUTENTICACAO_GET’ must be declared

O meu metodo é o seguinte :

cs = conn.prepareCall("{call SP_TPT_AUTENTICACAO_GET(?,?,?,?,?,?)}");  
		
//Parametros de Entrada
cs.setString(1, email);
cs.setString(2, senha);  
		 
//Parametros de Saida
cs.registerOutParameter(3, OracleTypes.NUMBER);  
cs.registerOutParameter(4, OracleTypes.NUMBER); 
cs.registerOutParameter(5, OracleTypes.VARCHAR); 
cs.registerOutParameter(6, OracleTypes.VARCHAR); 
		
//Execução da procedure
cs.execute();   
		  
//Valor de retorno
String msg = cs.getString(6); 
		
return msg;

Sendo que e mail e senha são os parametros de entrada, a minha sequincia da procedure é:
sp_tpt_autenticacao_get(email, 'senha, v_id_usuario, v_id_tp_usuario, v_usuario_nome, v_msg);

Valeu…

A procedure está compilada no banco sem erros, ela está válida ?

Tenta executar ela na mão sem ser pelo Java e verifica se dar certo.
Pq o código que te passei tá correto, essa é a forma pra chamar um proc passando e recebendo parâmetros com o Oracle.

Pelo erro que está mostrando tô achando bem provável sua procedure estar com algum problema.

Você está conectando no banco correto.

Boa tarde

Então cara, funcionou agora era erro no banco de dados mesmo valeu, deixa eu te perguntar mais uma coisa com relação a chamada de uma procedure que me retorno um OUTCURSOR vc tem um exemplo de como seria feito, tipo:

P_ID_TIPO_USUARIO / NUMBER / INPUT – Parametro de entrada
OUTCURSOR / REF CURSOR / OUTPUT – retorno cursor

Essa procedure irá realizar um select e me devolver esse cursor como faço para trabalhar com esse cursor?

Valeu…

Olá

http://www.guj.com.br/posts/list/36103.java#191716