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 :

utilisation variable pl/sql


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Par défaut utilisation variable pl/sql
    Je declare une variable mois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select to_char(sysdate,'MM') into MOIS  from dual;
    TABLE_MOIS := 'T_HISTO_STAT_MOIS_'||MOIS;
    comment puis je utiliser cette variable dans ce cas ci ?

    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
    if c2%NOTFOUND
    then
            insert into :TABLE_MOIS(
                                    ENVIRONNEMENT,
                                    APPLI,
                                    JOB,
                                    DATE_DEBUT,
                                    DATE_FIN,
                                    STATUT,
                                    NOM_DATE_VTOM,
                                    VALEUR_DATE
                                    )
    
                            values
                                    (
                                    t_ENVIRONNEMENT,
                                    t_APPLI,
                                    t_JOB,
                                    t_DATE_DEBUT,
                                    t_DATE_FIN,
                                    t_STATUT,
                                    t_NOM_DATE_VTOM,
                                    t_VALEUR_DATE
                                    );
    
    
    end if;

  2. #2
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    SQL dynamique (execute immediate ...)
    Mais ce n'est pas une bonne idée d'avoir un tableau séparé pour chaque mois...

  3. #3
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if c2%NOTFOUND
    then
      execute immediate 'insert into '|| TABLE_MOIS ||' (ENVIRONNEMENT, APPLI, ....'
        using t_ENVIRONNEMENT, t_APPLI, ...;
      ...

  4. #4
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Le principe, c'est qu'on ne peut utiliser des variables bind que sur des valeurs par sur des infos de structures (nom de table, nom de colonne...)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Par défaut
    merci,

    j'essais plus haut une declaration de cursoeur dans le même genre mais cela ne fonctionne pas :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CURSOR c2 is
    EXECUTE IMMEDIATE 'select ENVIRONNEMENT,APPLI,JOB,DATE_DEBUT,DATE_FIN,STATUT,NOM_DATE_VTOM,VALEUR_DATE_V
    TOM from '||TABLE_MOIS||;

  6. #6
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    ah oui mais non, faut pas mélanger les 2 syntaxes lol

    Execute immediate, c'est pour faire une requete qui ne revoit rien (insert, delete...) ou qui ne renvoi qu'une ligne (à ce moment là, on met un "into" après)

    Pour un curseur dynamique, il suffit de de déclarer C2 en "sys_refcursor" puis de l'ouvrir tout simplement comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    open c2 for 'select ENVIRONNEMENT,APPLI,JOB,DATE_DEBUT,DATE_FIN,STATUT,NOM_DATE_VTOM,VALEUR_DATE_V
    TOM from '||TABLE_MOIS||;

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

Discussions similaires

  1. Utilisation variable dans procédure SQL SERVEUR
    Par Daniel MOREAU dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/06/2013, 07h42
  2. Utilisation variable/alias (SQL) dans requet
    Par caledonien dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/11/2011, 09h38
  3. Utiliser une variable PL/SQL dans une requête
    Par maxwell86 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 10/12/2008, 09h34
  4. Utiliser les macro variables avec sql
    Par Euseibus dans le forum Macro
    Réponses: 5
    Dernier message: 25/10/2007, 18h40
  5. Debutant recherche utilisation variable système
    Par agent-zaizai dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/05/2003, 21h53

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