Ejecutar función de oracle en visual basic

Como puedo llamar a una función oracle (no procedimiento) desde visual basic, ya me he creado la conexión a la bd y funciona correctamente, el valor que devuelve la función es un boolean. He intentado hacerlo a través del command.execute pero al intentar abrir el recordset de resultado me dice que está cerrado. Agradecería muchísimo que me pegarais un trozo de código a modo de ejemplo.

1 respuesta

Respuesta
1
Bueno mira por lo regular las funciones no puedes ejecutarlas tan fácilmente como un query para poderlas ejecutar debes tener donde lanzar el resultado de tu función creo que con lo siguiente lo podrás lograr
Function CargarFuncion (Conexion As ADODB.Connection) As Boolean
dim strRecordDato As ADODB.Recordset
set strRecordDato = New ADODB.Recordset
with strRecordDato
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open "SELECT Funcion(Param) As Dato;",Conexion,,,adCmdText
'En el Query podras ver que
'unicamente estoy llamando a
'la funcion (Funcion) con sus
'parametros (Param)
'sin ninguna clausula from
'ahi es donde te carga la
'funcion pero la carga dentro
'de un recordset yo he hecho
'eso con PostgreSQL inmagino
'que te ha de funcionar con
'Oracle luego:
.MoveFirst
CargarFuncion = !Dato
.Close
End With
End Function
Bueno Espero te sirva Cuéntame si te sirve o si no si fuera el segundo caso tal vez pueda conseguir como hacer una prueba con Oracle directamente.
Al llegar al punto donde se abre el recordset .Open "SELECT Función(Param) As Dato;", Conexión,,, adCmdText
se produce un error ORA-00911 'Carácter no válido' este error es debido al ';', si le quito el punto y coma, me sale otro error 'Palabra clave FROM no encontrada'. Creo que tiene que haber otra forma de llamar a una función desde v. basic pero de momento no he encontrado ninguna, si consigues alguna información al respecto te agradecería que me lo postearas. De todas formas muchas gracias por tu interés ;)
Ya he encontrado donde estaba el problema, el problema es que me faltaba especificar la tabla del sistema FROM DUAL en el string del recordset. Muchas gracias por tu ayuda. Un Saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas