Galera estou usando java.sql.Types como faço para pegar um cursor com essa API?
Antes eu usava oracle.jdbc.OracleTypes porem minha conexao era feita atraves de uma classe JDBC agora estou usando conexao JNDI por isso estou usando java.sql.Types.
Tenho como pegar um Cursor? qual propriedade usar?
[quote=diogo soares]Galera estou usando java.sql.Types como faço para pegar um cursor com essa API?
Antes eu usava oracle.jdbc.OracleTypes porem minha conexao era feita atraves de uma classe JDBC agora estou usando conexao JNDI por isso estou usando java.sql.Types.
Tenho como pegar um Cursor? qual propriedade usar?[/quote]
OracleTypes.CURSOR
Faz assim…
callStmt.setInt(1, manterClientesInfGeraisVO.getCodigo());
callStmt.registerOutParameter(2, OracleTypes.CURSOR);
callStmt.registerOutParameter(3, Types.INTEGER);
callStmt.registerOutParameter(4, Types.VARCHAR);
callStmt.execute();
mcig = (ResultSet) callStmt.getObject(2);
callStmt.close();
é só importar o jar do oracle para a sua classe ou seu projeto. E impostar o oracle.jdbc.OracleTypes.
Entendeu…
???
Faloooww…
hehehe
Valeu wag?.ferreira, cara era realmente isso que eu estava querendo fazer
Olá…
eu também tentei fazer isso mas dá erro do tipo incompatível…
A procedure é assim:
SP_S_ACCOUNT(p_LOGIN IN VN_LOGIN.ID%TYPE := NULL,
p_TIPO IN VARCHAR2 := NULL,
p_REF OUT SYS_REFCURSOR)
No java está assim:
CallableStatement cs;
Connection con = ConnectionFactory.getConnection();
cs = con.prepareCall("{call CVI_PCK.SP_S_ACCOUNT(?,?,?)}");
cs.setString(1, p_Login);
cs.setString(2, p_Tipo);
cs.registerOutParameter(3, Types.REF);
E não funciona… o que pode ser ?
Ae velho…
Respondi o teu e-mail, mas para ajudar a galera ae também que esta com duvida nisto vou postar aqui tbm.
o seu codigo está assim
CallableStatement cs;
Connection con = ConnectionFactory.getConnection();
cs = con.prepareCall("{call CVI_PCK.SP_S_ACCOUNT(?,?,?)}");
cs.setString(1, p_Login);
cs.setString(2, p_Tipo);
cs.registerOutParameter(3, Types.REF);
Mas o retorno do cursor voce não vai conseguir pegar com o REF.
Então o que eu fiz foi importei o oracleTypes .
import java.sql.Types;
import oracle.jdbc.OracleTypes;
assim seu codigo ficaria assim
CallableStatement cs;
Connection con = ConnectionFactory.getConnection();
cs = con.prepareCall("{call CVI_PCK.SP_S_ACCOUNT(?,?,?)}");
cs.setString(1, p_Login);
cs.setString(2, p_Tipo);
cs.registerOutParameter(3, OracleTypes.CURSOR);
//continuara usando o java.sql.types, só vai usar o oracle para pegar cursor
cs.registerOutParameter(4, Types.Integer);
cs.execute();
//aqui tu pega o cursor
ResultSet cs = (ResultSet) callStmt.getObject(2);
Velho acho que é isto…Espero ter ajudado…Não sei se fui claro…Não me dou bem explicando nada…
Mas qualquer coisa prende no grito
Falow