IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Récupération du texte d'un package (NI all_source NI dbms_metadata.get_ddl) [12c]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Par défaut Récupération du texte d'un package (NI all_source NI dbms_metadata.get_ddl)
    Ces Messieurs-Dames, bonjour !

    J'aimerai simplement récupérer le TEXTE d'un Package (en-tête et body idéalement), mais voilà :
    1. Un SELECT TEXTE FROM ALL_SOURCE ne me ramène pas les premiers "mots", à savoir 'create or replace PACKAGE mon_pack AS', mais seulement 'PACKAGE mon_pack AS'
    2. L'emploi de dbms_metadata.get_ddl me rajoute quant à lui un "create or replace editionable package "utilisateur".mon_pack AS'

    Alors voilà : pourquoi n'aurais-je pas le droit d'avoir EXACTEMENT ce que j'ai écrit ? Existe-t-il une troisième méthode ? Ou bien, sachant que je travaille avec SQL Developer, ce dernier filou a-t-il quelque chose à voir dans cette histoire ?

    J'espère avoir été clair !
    D'avance, merci !

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Divers outil genre PL/SQL Developer, SQL Developper, Toad, etc. vous offre cette possibilité en sauvegardent dans un fichier.
    Dbms_metadata vous offre la possibilité de transformer le code source.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Par défaut
    En fait, j'aimerai une requête qui puisse me faire ça. J'ai un fichier .txt avec mes +/- 500 packages sous forme de liste, et je LOOP sur ce fichier pour extraire le texte de ces packages, mais il est impératif que le code soit similaire à celui que j'ai écrit dans SQL Developer. C'est pour ça que j'aimerai une alternative aux deux requêtes que j'ai cité dans mon post originel !

    En tout cas, merci pour ton aide !
    PS: Pas la peine de me vouvoyer, je suis une truite.

  4. #4
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Est-ce que cen n'est pas un problème d'affichage? dbms_metadata retourne un CLOB. Sous Sous sqlplus il faut peut être faire 'set long'

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Les truites elles aussi sont respectables!
    Ci dessous le point de départ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 
     
    SQL> 
    SQL> CREATE OR REPLACE Package Null_Package Is
      2    Procedure Null_proc;
      3  End;
      4  /
    Package created
    SQL> CREATE OR REPLACE Package Body Null_Package Is
      2    Procedure Null_proc
      3    Is
      4    Begin
      5      Null;
      6    End;
      7  End;
      8  /
    Package body created
     
    SQL> set serveroutput on
    SQL> 
    SQL> Declare
      2    hOpenOrig   NUMBER;
      3    hModifyOrig NUMBER;
      4    hTransDDL   NUMBER;
      5    l_ddl       Clob;
      6  Begin
      7    --
      8    hOpenOrig := dbms_metadata.open('PACKAGE');
      9    --
     10    hModifyOrig := dbms_metadata.add_transform(hOpenOrig,'MODIFY');
     11    dbms_metadata.set_remap_param(hModifyOrig,'REMAP_SCHEMA','MNI',null);
     12    dbms_metadata.set_filter(hOpenOrig, 'NAME','NULL_PACKAGE');
     13    --
     14    hTransDDL := dbms_metadata.add_transform(hOpenOrig ,'DDL');
     15    dbms_metadata.set_transform_param(hTransDDL, 'PRETTY', TRUE);
     16    dbms_metadata.set_transform_param(hTransDDL, 'SQLTERMINATOR', TRUE);
     17    --
     18    l_ddl := dbms_metadata.fetch_clob(hOpenOrig);
     19    --
     20    dbms_output.put_line(SubStr(l_ddl,1,1000));
     21    --
     22    dbms_metadata.close(hOpenOrig);
     23  End;
     24  /
     
      CREATE OR REPLACE PACKAGE "NULL_PACKAGE" Is
      Procedure Null_proc;
    End;
     
    /
    CREATE OR REPLACE PACKAGE BODY "NULL_PACKAGE" Is
      Procedure Null_proc
      Is
      Begin
        Null;
      End;
    End;
     
    /
    PL/SQL procedure successfully completed
     
    SQL>

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Par défaut
    Merci pour vos conseils.

    Puisqu'il n'existe apparemment pas de requête "simple" pour cela, quelle conclusion peut on en tirer ?
    Pourquoi est ce que lorsque j'affiche un package sur SQL Developer, j'ai bien ce fameux "Create or replace" mais qu'il n'est pas dans le ALL_SOURCE? Est-ce une sorte d'affichage implicite, ou quelque chose comme ça qui m'échapperait ?

    PS : Les truites sont respectables tant qu'elles ne cassent pas le fil, ces garces !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP] Parser d'une page HTML pour récupération du texte
    Par trihanhcie dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 23
    Dernier message: 18/06/2011, 19h10
  2. [JDOM] Récupération du texte d'un élément XML‎
    Par kaninama dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 20/05/2006, 11h36
  3. Récupération de texte avec win32::ole
    Par bluecurve dans le forum Modules
    Réponses: 2
    Dernier message: 22/02/2006, 16h47
  4. Récupération du texte d'un lien hypertext
    Par -=ET=- dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/05/2005, 17h08
  5. Problème de récupération de texte de formulaire
    Par bigourson dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2004, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo