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

Wie definiere ich eine pl SQL-Funktion mit dynamischen Rückgabetypen in Oracle?

Sie können dies implementieren, indem Sie einen schwach typisierten Ref-Cursor als Rückgabetyp verwenden. Dies ist besonders einfach über eine Client-Schnittstelle mit JDBC zu implementieren, da der zurückgegebene Cursortyp wie jedes Abfrageergebnis schrittweise durchlaufen werden kann und die Metadaten von ResultSet.getMetaData() abgefragt werden können. Hier ist ein Beispiel:

CREATE OR REPLACE PROCEDURE retrieve_info(field_id in integer, p_cursor in out sys_refcursor)
AS
BEGIN
  open p_cursor for 'select * from emp';
END;

Die Abfrage in Anführungszeichen könnte alles sein, was einen beliebigen Typ für eine beliebige Anzahl von Spalten zurückgibt.