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 :

Factorisation de code [11gR2]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut Factorisation de code
    Bonjour,

    J'ai une problématique que je n'arrive pas à résoudre.
    C'est assez simple, j'ai un package avec plusieurs fonction :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Fonction A()
    begin
     
    end;
     
    Fonction B()
    begin
     
    end;

    Et dans toutes ces fonctions, j'ai des selects qui ont une clause IN avec un autre select, et ce select est identique dans plusieurs fonction de mon package.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Fonction A()
    begin
    
    Select ... where x in (select Y);
    
    end;
    
    Fonction B()
    begin
    
    Select ... where x in (select Y);
    
    end;

    J'aimerai factoriser le select Y, pour que si il change je n'ai pas 5 fois à le faire dans le package.
    J'ai essayé avec un fonction qui ramène un curseur (sys_refcursor) mais sans succès, apparemment la clause IN ne sait pas traiter un curseur.

    Quelqu'un aurait une idée ? (sans faire une vue)
    le select Y ramène une liste de number.

    Merci d'avance.
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  2. #2
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    J'ai finalement réussi avec un type TABLE of number déclaré au niveau du schéma (important) et avec une fonction qui fait un BULK COLLECT sur mon select Y, qui me renvoie le nouveau type ainsi remplie.

    après il suffit que je déclare mon type et que je le pop avec la fonction et finalement je peux faire un where in (select * from TABLE(mon_nouveau_type))
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  3. #3
    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
    Il est difficile de se prononcer avec seulement ces informations. Combien des enregistrements ramène le select * from Y pour combien des utilisateurs des fonctions du package simultanément ?
    Et pour les autres « select », combien des enregistrements existent en moyenne dans les autres tables ?
    En fonction des divers autre critères je choisirais soit de ne rien factoriser, soit de passer par de requêtes SQL dynamiques, soit par des vues, soit par une solution basée sur des collections, etc.
    Et il manquerait juste le fait d’apprendre qu’en fait Y c’est une table temporaire remplies avec des choix multiple dans l’interface.

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

Discussions similaires

  1. factorisation de code
    Par calagan99 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 21/05/2007, 09h00
  2. [C++] Factorisation de code
    Par xterminhate dans le forum C++
    Réponses: 6
    Dernier message: 07/11/2006, 16h21
  3. factoriser du code
    Par grabriel dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2006, 15h00
  4. Réponses: 7
    Dernier message: 01/08/2006, 11h58
  5. Réponses: 4
    Dernier message: 06/11/2003, 10h37

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