Retroceder   Foros del Web > Programación para sitios web > .NET > win forms

Respuesta
 
Herramientas Desplegado
Antiguo 07-mar-2007, 10:03   #1 (permalink)
skfk ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2007
Mensajes: 3
Pregunta Leer Cursor devuelto por una función de Oracle en VB.NET

Hola.
Estoy trabajando con Oracle EX y Visual Basic .NET.

Tengo en Oracle varios packages con funciones que devuelven un cursor y no se que estoy haciendo mal, pero me da error.

En procedimientos como variable de salida un cursor si me funciona, pero en función no.

Os pongo un ejemplo tonto del código que estoy utilizado sin funciones ni nada, que sino es un poco extenso.

Muchas gracias

Package Oracle
Código:
create or replace PACKAGE P_CLIENTES AS

  type empcur is ref cursor;
  
  FUNCTION f_mostrar_clientes RETURN empcur;

END P_CLIENTES;

FUNCTION f_mostrar_clientes RETURN empcur AS
pcursor empcur;
BEGIN
    open pcursor for
      select * from clientes;
    return pcursor;
END f_mostrar_clientes;
Código VB .NET
Código:
    Private Sub funcion()

	' Creo la conexión
	Oraclecon.Open()
	myCMD = New OracleCommand
	myCMD.Connection = Oraclecon


	Dim Ds As New DataSet

	' Llamada al procedimiento
	Dim OracleParameter1 As Oracle.DataAccess.Client.OracleParameter = New Oracle.DataAccess.Client.OracleParameter
	myCMD.CommandText = "p_clientes.f_mostrar_clientes"
	myCMD.CommandType = CommandType.StoredProcedure

	'Paso los parámetros al la función/procedimiento de dos formas

	' 1)
	' Si lo llamo de estar forma, al ejecutar me dice:
	' parameter 'RETURN_VALUE': OracleType.Cursor parameters may only be ParameterDirection.Output parameters
	myCMD.Parameters.Add(New OracleParameter("RETURN_VALUE", OracleType.Cursor)).Direction = ParameterDirection.ReturnValue

	' o 2)
	' Y si lo llamo de esta otra:
	' ORA-06550: línea 1, columna 35:
	' PLS-00382: el tipo de expresión no es correcto
	' ORA-06550: línea 1, columna 7:
	' PL/SQL: Statment ignored
	myCMD.Parameters.Add(New OracleParameter("RETURN_VALUE", Oracle.DataAccess.Client.OracleDbType.RefCursor)).Direction = ParameterDirection.ReturnValue

	Dim MyDA As New OracleDataAdapter(myCMD)

	Try
        	MyDA.Fill(Ds)
           	Catch myex As Exception
                MsgBox(myex.Message)
                cerrar()
        End Try

        DataGrid1.DataSource = Ds.Tables(0)

	cerrar()

    End Sub
skfk está desconectado   Responder Citando
Antiguo 18-abr-2008, 10:07   #2 (permalink)
agjj677 ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 3
Re: Leer Cursor devuelto por una función de Oracle en VB.NET

Prueba con:
Código:
myCMD.CommandText = "Select p_clientes.f_mostrar_clientes() from dual"
myCMD.CommandType = CommandType.Text
agjj677 está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:17.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93