Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So rufen Sie eine Oracle-Funktion mit einem Ref-Cursor als Out-Parameter aus Visual Basic auf

Sie müssen den Reader aus dem Parameter holen, nicht aus dem Befehl.

Also statt

Dim reader As OracleDataReader = rvCmd.ExecuteReader()

Sie benötigen:

rvCmd.CommandType = CommandType.StoredProcedure
rvCmd.CommandText = "getallprodpckg.get_allcust"

Dim qrySerial3 As New Oracle.DataAccess.Client.OracleParameter(
    None, OracleDbType.RefCursor, ParameterDirection.ReturnValue)

rvCmd.Parameters.Add(qrySerial3)

rvCmd.ExecuteNonQuery()

Dim cursor as OracleRefCursor = DirectCast(qrySerial3.Value, OracleRefCursor)

Dim reader As OracleDataReader = cursor.GetDataReader()