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
- Valerio's blog
- Inicie sesión o regístrese para enviar comentarios
Llamar a una función SQL Oracle
Tal vez te sirva esto: Aqui
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?
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)
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 .
y con este
no envia parámetros pero la funcion no puede retornar dos valores
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 .
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Í: