Oracle-cursor zurück geben
Möchte ich Folgendes deklarieren cursor:
CURSOR some_cursor RETURN oks_trips.trip_id % TYPE IS
SELECT trip_id FROM oks_trips;
Aber ich bekomme eine Fehlermeldung:
Error(5,36): PLS-00320: the declaration of the type of this expression is incomplete or malformed
oks_trips.trip_id Typ ist NUMBER(3, 0)
, also versuchte ich einfach nur NUMMER statt der oks_tripd.trip_id % TYPE
aber ich bekomme immer noch den Fehler.
Kann ich nicht weglassen die RETURN
Aussage, weil ich die declare cursor-in-Paket und oracle Anforderungen, die es gibt.
Also die Frage ist WARUM kann ich nicht NUMBER
oder some_field % TYPE
im cursor - RETURN
- Klausel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus den Konzepten guide:
Dem wichtigen Satz gibt es einen "record-orientiert'. Die syntax für die explizite cursor-Deklaration zeigt auch deutlich den return-Typ zu sein hat
rowtype
, die es definiert als:Sie bittet, es zurückzugeben, den Datentyp einer Spalte nicht Zeile/Datensatz. Wenn Sie nicht möchten, verwenden Sie eine vorhandene
%ROWTYPE
dann Oracle stellt den Mechanismus zur Deklaration eines record-Typs statt, als eine andere Antwort hat ja schon gezeigt.Du scheinst zu Klagen, dass die Dokumentation nicht sagen, dass Sie nicht verwenden können, einen skalaren Wert als Rückgabe. Es ist auch nicht zu sagen, dass Sie nicht mehr zurück können, ein Paket, oder ein Blick, oder eine Rolle. Es muss nicht erschöpfend Liste alles, was Sie nicht tun, da es klar sagt Ihnen genau, was Sie kann tun, das ist die Rückkehr ein Typ repräsentiert eine Zeile.
In Ihrem Fall, die Zeile Typ muss nur enthalten eine einzelne Spalte ist, aber es ist immer noch kein Grund, dass Sie sollten in der Lage sein - oder zu erwarten, dass Oracle - lassen Sie eine Abkürzung nehmen, in diesem sehr limitd Szenario. Es scheint nicht unvernünftig zu bieten, einen einheitlichen Mechanismus - es ist nicht viel von einer Härte für Sie, zu erklären, das
record
, in der Erwägung, dass diese Gebäude, testen und pflegen einen separaten Pfad, denn dies wäre ein erheblicher Aufwand.RETURN
- Klausel.