CallableStatement: Store Procedure

Gostaria de saber como executar store procedures com a classe CallableStatement, e como passar os parâmetros das stores procedures, já que algumas apresentam: - um parâmetro de entrada; - um parâmetro de saída; - um parâmetro de entrada e outro de saída;

E ainda, setar o role no Oracle 8i. Vcs poderiam me ajudar?

Ai vai im peq ex de chamada de procedure com par in e out:

CallableStatement cstmt = con.prepareCall("{call Busca_depto(?,?,?)}");
int dep = Integer.parseInt(args[0]);
cstmt.setInt(1, dep);
cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);
cstmt.registerOutParameter(3, java.sql.Types.VARCHAR);
cstmt.execute();
String dname = cstmt.getString(2);
String loc = cstmt.getString(3);
System.out.print("Nome do departamento: “+dname);
System.out.print(” Local: "+loc);

Vc precisa setar o parametro in.A posição 1 das “?” é o parametro in do tipo inteiro.
Depois vc diz que nas posições 2 e 3 são parametros de saida, registrando eles e dizendo o tipo de retorno(VARCHAR p/ ORACLE).
Ai vc executa e espera os retornos com tipos compativeis(String Java=VARCHAR Oracle).
Qualquer coisa manda!

[]'s

Valeu mesmo cara! Agora tenho que setar o role. Vcs sabem fazer isso?

Não entendi direito.
Qual a role que vc quer setar???
Vc quer fazer via java???

Fala cara! É o seguinte, foi me passado que para utilizar certas store procedures eu teria que setar um role, e gostaria de fazer isso em java…

É o seguinte
Vc quer setar uma role de privilegio p/ poder executar uma procedure?
Se for isso, nunca vi fazer isso pelo java, mas deve ter uma maneira.
Não sei em outros bancos, mas no Oracle vc seta roles p/ o usuario do banco. Nesse caso se o usuario que vc esta usando p/ conectar tiver grant de uma role vc não precisa fazer isso, quem define provilegios dos usuarios é o dba.
Por exemplo: Se vc tem um usuario “ze”, o dba vai dar grant da role tal para o ususario “ze”, ai vc vai ter acesso a tudo que diz respeito a role.
Não sei se era isso que vc queria saber.
Qualquer coisa manda.

[]'s

Cara, não sei se é possível (ainda mais porque estou iniciando com JDBC), mas é o seguinte: Existem roles “pré-definidas” e gostaria de setar uma para um usuário, via Java. Ainda não encontrei solução, mas obrigado mesmo assim!