Boa noite,
Preciso chamar, usando hibernate, uma função de uma package (Oracle) onde devo passar 4 parametros. A package irá retornar 7 campos com valores.
Alguém poderia me orientar nisso?
Desde já agradeço pela atenção.
Att,
Boa noite,
Preciso chamar, usando hibernate, uma função de uma package (Oracle) onde devo passar 4 parametros. A package irá retornar 7 campos com valores.
Alguém poderia me orientar nisso?
Desde já agradeço pela atenção.
Att,
Para executar a package, creio que você vai ter de usar o método Connection.prepareCall():
http://download.oracle.com/javase/6/docs/api/java/sql/Connection.html#prepareCall(java.lang.String)
http://www.enterprisedt.com/publications/oracle/result_set.html
Para obter uma Connection no Hibernate, use Session.connection() ou Session.doWork():
http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/Session.html#connection()
http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/Session.html#doWork(org.hibernate.jdbc.Work)
Obrigado pelas dicas Roger!
Bom dia,
Ao chamar uma package do Oracle para executar uma procedure está dando o erro:
java.sql.SQLException: ORA-06550: line 1, column 41:
PLS-00103: Encountered the symbol "" when expecting one of the following:
:= . ( % ;
The symbol "(" was substituted for "" to continue.
ORA-06550: line 1, column 63:
PLS-00103: Encountered the symbol ";" when expecting one of the following:
. ( ) , * @ % & | = - + < / > at in is mod remainder not
range rem => .. <um expoente (**)> <> or != or ~= >= <= <>
and or like LIKE2_ LIKE4_ LIKEC_ betw
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1169)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
...
Essa procedure espera 4 parametros de entrada e retorna 7 colunas com os dados, conforme o código abaixo:
PROCEDURE STATUS_BOTAO (P_ID_SITUACAO_FLUXO IN NUMBER
,P_CD_SEQUENCIA_FLUXO IN NUMBER
,P_CD_BASE_CLIENTE IN NUMBER
,P_CD_CGC_CPF IN NUMBER
,P_CD_USUARIO IN VARCHAR2
,P_BT_ENVIAR_ANALISE OUT NUMBER
,P_BT_EXCECAO OUT NUMBER
,P_BT_APROVAR OUT NUMBER
,P_BT_REPROVAR OUT NUMBER
,P_ID_STATUS OUT NUMBER
,P_BT_COMPLEMENTAR OUT NUMBER
,P_DS_STATUS OUT VARCHAR2) IS
WW_ID_VERIFICA NUMBER(1);-- 0 para Não e 1 para Sim
WW_CD_SEQUENCIA_FLUXO NUMBER(10);
WW_ID_FIM_FLUXO NUMBER(10);
WW_ID_EXCECAO NUMBER(10);
WW_ID_COMPLEMENTO NUMBER(10);
WW_ID_FINALIZA_RPV NUMBER(10);
WW_ID_MUDA_APROVADOR NUMBER(10);
Abaixo o código Java.
ResultSet res = stored.executeQuery();//Aqui ocorre o erro.
Alguém tem alguma sugestão?
Obrigado.
Resolvi da seguinte forma:
stored.execute();
//Para pegar o valores
int primeiro = stored.getInt(1);
...
Muito obrigado a todos que me ajudaram!