Ayuda

Hola a todos, alguien me puede ayudar para llamar una función de oracle 11g desde java 7 , 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.

Usa

Usa CallableStatement:

Imagen de Valerio

Tego este pequeño

Tego este pequeño codigo

 

//////////////////////////////

y esta es la funcion

 

//////////////////////////////////////
el error que me sale es
 

Pusiste dos valores de

Pusiste dos valores de retorno
 

Por eso dice que esperaba un igual y se encontro con una coma

 
Tu funcion regresa solamente un valor ( se pueden regresar mas en PL/SQL? creo que no )

 

btw, utiliza el tag <code> cuando postees codigo

Imagen de Valerio

Asi lo hice

ya lo correji y me que do asi
 

ahora el error es :

Conectado a la Base de datos POS BARARED-Oracle
Exception in thread "main" java.sql.SQLException: ORA-06550: line 1, column 10:
PLS-00653: aggregate/table functions are not allowed in PL/SQL scope
ORA-06550: line 1, column 13:
PLS-00382: expression is of wrong type
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:191)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:950)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3488)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:3857)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
at com.conecOracle.OracleFuncion.main(OracleFuncion.java:41)

Al parecer no puedes usar

Al parecer no puedes usar pipelines.


Al parecer tu funcion podria ser reescrita sin eso.

Imagen de Valerio

Lo que pasa es que las

Lo que pasa es que las funciones no los hago yo sino que una persona experta en PL SQL

la pregunta es:

¿Qué me recomienda en este caso?

¿Qué cambien el desarrollo de las funciones ?

la verdad yo no se nada de Oracle y PL SQL

Imagen de paranoid_android

Exponer tu funcion en un Stored Procedure o Package

Recuerdo que en Oracle no puedes usar las funciones desde Java, por lo que necesitarías acceder a ella por medio de un Procedimiento Almacenado o un Paquete. Aunque para la versión que manejas no sé si siga aplicando la restricción.

Imagen de Valerio

Gracias

Gracias por la información, es que me dijeron que intentara llamar una funcion de Oracle desde java , ya lo hice de la forma correcta pero me sale errores que son de oracle

PLS-00653: aggregate/table functions are not allowed in PL/SQL scope
ORA-06550: line 1, column 13:
PLS-00382: expression is of wrong type
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored