Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment définir une fonction pl sql avec des types de retour dynamiques dans Oracle ?

Vous pouvez implémenter cela en utilisant un curseur de référence faiblement typé comme type de retour. Ceci est particulièrement facile à mettre en œuvre à partir d'une interface client utilisant JDBC, car le type de curseur renvoyé peut être parcouru comme n'importe quel résultat de requête et les métadonnées peuvent être interrogées à partir de ResultSet.getMetaData(). Voici un exemple :

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;

La requête entre guillemets peut être n'importe quoi renvoyant n'importe quel type, pour n'importe quel nombre de colonnes.