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

SQL Oracle Discussion :

[Oracle 9iR2][PL/SQL] Alias noms de tables


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 110
    Points : 137
    Points
    137
    Par défaut [Oracle 9iR2][PL/SQL] Alias noms de tables
    Bonjour,

    Soit une requête du type :

    SELECT a.CHAMP1, a.CHAMP2 FROM MATABLE a;
    Je veux la mettre dans une procédure PL/SQL, mais je voudrais pouvoir changer dynamiquement le nom de la table.

    Par exemple en fonction d'une année passée en argument.

    MATABLE2006
    MATABLE2005

    Je ne vois pas trop comment créer une sorte d'alias dans le nom.

    Ma solution aurait été de laisser la procédure avec, non pas un nom de table, mais avec un nom de vue que je créerai dynamiquement avant l'appel de la procédure qui contiendrait la bonne table. Mais je ne suis pas certain de la qualité de l'astuce en terme de performance, non ?

    Merci pour vos conseils...

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    je propose un curseur sur la liste des tables/vue à passer en paramètre,
    et l'utilisation de execute imediate dans une boucle.

    voili, voilou

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 110
    Points : 137
    Points
    137
    Par défaut Une solution...
    J'ai trouvé une solution :

    CREATE OR REPLACE PROCEDURE DEV.myTest (myTable IN VARCHAR2) IS
    mySqlInsert VARCHAR2(500);

    BEGIN

    mySqlInsert :='INSERT INTO ' || myTable || ' VALUES (2,5)';

    EXECUTE IMMEDIATE mySqlInsert ;


    END myTest;
    /
    (myTable admet deux colonnes de type VARCHAR2.)


    Remarque :
    Pour insérer du texte, il faut entourer le texte de deux simples quotes (pas de guillemets, attention !).
    Ce qui donne :
    mySqlInsert :='INSERT INTO ' || myTable || ' VALUES (''orange'',5)';

    Si vous avez d'autres suggestions par rapport à ma question initiale, elles sont les bienvenues !

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tout dépend de l'utilisation de ton SELECT. Il sera appelé à partir de quoi, Report / Forms / Sql ?

    EDIT : http://sheikyerbouti.developpez.com/execute_immediate/

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 110
    Points : 137
    Points
    137
    Par défaut
    Bonsoir,

    En fait, je lance les procédures stockées Oracle à partir d'une application .NET (FWK1.1).

    J'ai parlé de SELECT, mais en fait, c'est faux, c'était pour l'exemple. Je n'ai que des INSERT ou UPDATE.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/03/2007, 11h46
  2. [Oracle 9iR2][PL/SQL] Session bizarre
    Par mainecoon dans le forum SQL
    Réponses: 19
    Dernier message: 14/02/2007, 09h46
  3. [Oracle 9iR2][PL/SQL] EXECUTE IMMEDIATE USING
    Par mainecoon dans le forum Oracle
    Réponses: 4
    Dernier message: 08/02/2007, 19h08
  4. Réponses: 2
    Dernier message: 04/09/2006, 18h07
  5. SQL et nom de table a creer
    Par USnico dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/08/2006, 16h03

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