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

So rufen Sie eine Funktion mit Rowtype-Parameter aus einer Select-Anweisung in Oracle auf

Mit %ROWTYPE ist dies nicht möglich. %ROWTYPE ist eigentlich ein PL/SQL-Datensatztyp, der in SQL kein zulässiger Typ ist, sodass Sie ihn nicht in einem SELECT verwenden können. Sie sollten einen Objekttyp erstellen, der die gleichen Spalten wie die Tabelle hat, in die Funktion wechseln, um diesen Objekttyp anstelle von %ROWTYPE zu erwarten, und dann können Sie so etwas schreiben:

SELECT function(table1_typ(column1, column2, column3))
  FROM table1 t1

Nachteile:Sie müssen immer noch alle Spalten im SELECT eingeben, und wenn Sie die Tabelle ändern, müssen Sie auch den Objekttyp und das SELECT ändern.