Ayuda

Hola alguien me puede ayudar de como llamar una Funcion de oracle 11g desde java,
acá el Store
 

y de esta forma intento llamar La Funcion desde Java
 

al correrlo la Funsion en Sql Developer me sale esto

24/12/12 30/12/12
31/12/12 06/01/13
07/01/13 13/01/13
14/01/13 20/01/13

eso es lo que yo quiero mostrarlo pero desde java, Espero y me ayuden

Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Llamar a una función SQL Oracle

Tal vez te sirva esto: Aqui

Imagen de Valerio

este en mi codigo

este en mi codigo
 

la funsion esta realizada desde oracle 11g y me retorna esto:
24/12/12 30/12/12
31/12/12 06/01/13
07/01/13 13/01/13
14/01/13 20/01/1
ejecutando la funcion desde Sql developer

Pero al ejecutarlo desde java me sale este error
Conectado a la Base de datos POS BARARED-Oracle
java.sql.SQLException: ORA-00900: invalid SQL statement

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:753)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:217)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:970)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1191)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3414)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3520)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4611)
at com.conecOracle.OracleFuncion.main(OracleFuncion.java:36)

Saludos..................

Re: este es mi código

Creo que te debería bastar con cambiar el parámetro de preparCall por: "{call mes(?,?)}"
Y ya estaría. ¿Puedes probar?

Imagen de Valerio

Mi codigo quedo Asi

 

Y como resultado me salio esto

Conectado a la Base de datos POS BARARED-Oracle
java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'MES'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:753)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:217)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:970)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1191)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3414)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3520)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4611)
at com.conecOracle.OracleFuncion.main(OracleFuncion.java:36)

Imagen de julgo

parametros

en tu función create or replace FUNCTION mes no veo ningún parámetro debería ser create or replace function mes(PARAMETRO1 TIPODATO, PARAMETRO2 TIPODATO) donde parametro1 y parametro2 son los nombres q les debes dar a las variables y definir que tipo son, y averigua como se llama a la función no debes confundirla con procedimientos almacenados .
Aquí el código le envía dos parámetros pero la función no espera ninguno (asi esta tu función mes)pero el código java no espera valor de retorno .  y con este
  no envia parámetros pero la funcion no puede retornar dos valores

Imagen de Valerio

ESTA FUNSION

ESTA FUNSION LO HICIERON LOS EXPERTOS DE ORACLE, ELLOS ME LO PASARON TAL Y COMO ESTA PARA QUE LO LLAME DESDE JAVA
 

CUANDO LO LLAMO DESDE SLQ DEVELOPER, ME SALE ESTO

F_INICIAL F_FINAL
24/12/12 30/12/12
31/12/12 06/01/13
07/01/13 13/01/13
14/01/13 20/01/1

Y EN JAVA ME MARCA ESTE ERROR

java.sql.SQLException: ORA-00900: invalid SQL statement

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:753)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:217)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:970)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1191)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3414)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3520)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4611)
at com.conecOracle.OracleFuncion.main(OracleFuncion.java:36)

Y FINALMENTE EN CODIGO QUEDÓ ASÍ: