J'ai une fonction qui renvoie un type de données d'enregistrement (2 champs: ID et nom). Comment puis-je obtenir les données d'une déclaration select? En particulier, j'essaye d'utiliser un objet OracleCommand essayant d'obtenir l'objet dans mon code C#. J'ai d'abord essayé ...Oracle: Sélectionner à partir de l'enregistrement Type de données
CALL FUNCTION_NAME() INTO :loRetVal
... mais j'obtiens une erreur de type de données pour le type que j'utilise. J'ai aussi essayé ...
SELECT * FROM FUNCTION_NAME()
... et ...
SELECT * FROM TABLE (FUNCTION_NAME())
... en vain. Je suppose que je cherche ...
SELECT * FROM RECORD (FUNCTION_NAME())
... qui, bien sûr, n'existe pas.
La seule solution que j'ai été capable de proposer est d'enrouler cet appel de fonction dans un autre appel de fonction dans lequel la fonction externe retourne un TABLE d'enregistrements contenant cet enregistrement unique. Ceci, cependant, semble lourd et je cherche une méthode plus simple. Toute aide serait appréciée.
EDIT: Désolé, j'ai également essayé SELECT FUNCTION_NAME() FROM DUAL
.
J'aime vraiment votre réponse. Pour continuer sur ce chemin. Vous pouvez créer une collection et la diffuser dans le SQL. - Créer un type de collection CREATE TYPE myobj_tab AS TABLE OF - que la fonction renvoie un type de collection CREATE OR REPLACE fonction f return myobj_tab IS objtab myobj_tab; commencer objtab: = myobj_tab (myobj (1, 'test')); return objtab; fin f; - METTEZ-le comme une table et sélectionnez-le directement. SELECT id, nom FROM TABLE (CAST (f() AS myobj_tab)); – David