Supposons que vous ayez un package PL / SQL avec un fichier existe-t-il un moyen d'obtenir une liste de champs contenus dans Je ne suis pas intéressé par schéma em> types d'enregistrement, uniquement paquet em> types d'enregistrement de nature. p> p> enregistrement code> défini:
Test_package.person_record_type code>? Par exemple, y a-t-il un
tout _ * code> avec ces informations? P>
3 Réponses :
Voici quelques questions similaires sur la récupération des informations du code de paquet. P>
Recherchez des variables globales du dictionnaire de données p>
Obtenez des méthodes et des paramètres de paquet de Oracle P>
Je vois cela comme un problème similaire comme le premier. Vous ne pouvez pas accéder à ces champs via une vue. Il y a la solution de texte Source d'analyse, qui est laide, ou vous aurez peut-être besoin d'une solution de contournement. P>
Quoi qu'il en soit, je pense que c'est quelque chose qui ne va pas dans votre architecture si vous en avez besoin. p>
Cela ne serait-il pas mieux comme un commentaire qu'une réponse?
Si PERSON_RECORD_TYPE est utilisé comme argument ou type de résultat de la procédure ou de la fonction, vous pouvez interroger tous les_arguments. Les informations sont cryptées peu de bit (la hiérarchie de l'encapsulation multiniveaux d'enregistrements et de collections est codée dans des colonnes de position, de séquence et de data_level), mais elle est présente. P>
Je ne pense pas que une telle question pointe sur une mauvaise architecture. Pour la génération automatique de code PLSQL, il s'agit d'une demande complètement légitime, malheureusement avec un support linguistique à PLSQL très faible. P>
Je pense que cela n'a pas fonctionné avant 18 ° C (corrigez-moi si je me trompe), mais maintenant, nous pouvons interroger le all_plsql_type_attrs code>
Voir: p>
TYPE_NAME TYPE_SUBNAME ATTR_NAME ATTR_TYPE_NAME LENGTH ---------------------------------------------------------------------- TEST_PACKAGE PERSON_RECORD_TYPE FIRST_NAME VARCHAR2 1000 TEST_PACKAGE PERSON_RECORD_TYPE LAST_NAME VARCHAR2 1000
All_plsql_type_attrs est en fait disponible aussi loin que 12.1.0.2
En fait, il est disponible en 12.1.0.1 selon le Changelog .
obtenir les champs de l'intérieur du même paquet?
@Tbone: Pas nécessairement. Je voudrais obtenir les champs d'un autre forfait.
"Obtenez-les", ce qui signifie que? Pouvez-vous donner un pseudo code de ce que vous essayez d'accomplir dans cet autre paquet?
Que voulez-vous faire avec ces données? Est-ce nécessaire pour aider une tâche de développeur telle que l'analyse d'impact? Ou une sorte d'exercice de programmation dynamique?
@APC: J'avais visé à générer automatiquement un code PL / SQL en fonction des champs de ce type d'enregistrement.