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

Der Rückgabetyp des Oracle-Cursors

Aus dem Konzeptleitfaden :

Der wichtige Ausdruck dort ist „rekordorientiert“. Die Syntax für die explizite Cursordeklaration zeigt auch deutlich, dass der Rückgabetyp ein rowtype sein muss , die es definiert als:

Sie fordern es auf, den Datentyp einer einzelnen Spalte zurückzugeben, nicht einer Zeile/eines Datensatzes. Wenn Sie keinen vorhandenen %ROWTYPE verwenden möchten dann bietet Oracle den Mechanismus, um stattdessen einen Datensatztyp zu deklarieren, wie eine andere Antwort bereits gezeigt hat.

Sie scheinen sich darüber zu beschweren, dass die Dokumentation nicht besagt, dass Sie keinen Skalarwert als Rückgabe verwenden können. Es heißt auch nicht, dass Sie ein Paket, eine Ansicht oder eine Rolle nicht zurückgeben können. Es muss nicht alles, was Sie nicht können, erschöpfend auflisten tun, da es Ihnen genau sagt, was Sie können tun, was darin besteht, einen Typ zurückzugeben, der eine Zeile darstellt.

In Ihrem Fall muss dieser Zeilentyp nur eine einzige Spalte enthalten, aber es gibt immer noch keinen Grund, warum Sie in der Lage sein sollten - oder Oracle erwarten -, dass Sie in diesem sehr begrenzten Szenario eine Abkürzung nehmen können. Es scheint nicht unangemessen, einen einzigen konsistenten Mechanismus bereitzustellen - es ist nicht sehr schwierig für Sie, den record zu deklarieren , wohingegen das Erstellen, Testen und Pflegen eines separaten Pfads dafür einen erheblichen Mehraufwand bedeuten würde.