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 :

[PL/SQl] Insertion de valeurs dans une table


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 208
    Points : 92
    Points
    92
    Par défaut [PL/SQl] Insertion de valeurs dans une table
    Bonjour Messieurs,

    N'arrivant pas à un résultat correct avec une requete, j'ai décidé d'utiliser PL/SQL pour arriver à mes fins.

    Je souhaite récupérer des valeurs d'une table et les inserer dans une autre. Bien sûr j'ai déja créé la table qui va recevoir les données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE TOTO_TNS_TPE 
    (ITP char(12),
    TpeTNS number(6),
    TpeTotal number(6)
    );

    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
    DECLARE
    v_itp TOTO_TNS_TPE.ITP%type;
    v_tns TOTO_TNS_TPE.TpeTNS%type;
    v_total TOTO_TNS_TPE.TpeTotal%type;
     
    BEGIN
    	FOR v_itp IN (select concv5e||tpespee||modcv5e||verlv5e from TELTPE where PONCOD = '19506' group by concv5e||tpespee||modcv5e||verlv5e)
    		select count(*) into v_total  from TELTPE where concv5e||tpespee||modcv5e||verlv5e=v_itp and poncod='19506';
    		select count(*) into v_tns  from TELTPE where concv5e||tpespee||modcv5e||verlv5e=v_itp and poncod='19506' AND (PTLREF = '92' OR PTLREF2B = '92' OR PTLREF2E = '92');
    		insert into TOTO_TNS_TPE(ITP,TpeTNS,TpeTotal) values (v_itp,v_total,v_tns);
    		commit;
    	END LOOP;
    EXCEPTION
     
     
    END;
    /
    1) Que pensez vous de mon code (étant débutant en PL/SQL, je ne l'ai pas executé, je suis en prod !) ??
    2) Je suis en Oracle 8.1.7.4 est ce que je peux declarer mon curseur comme je l'ai fait ?



    Merci.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    1) il est très beau

    Tu peux essayer ceci STP ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT
    INTO toto_tns_tpe(itp,   tpetns,   tpetotal)
    SELECT v_itp,
      COUNT(*) total,
      SUM(decode(instr(',' || ptlref || ',' || ptlref2b || ',' || ptlref2e || ',',   ',92,'),   0,   1) tns
    FROM teltpe
    WHERE concv5e || tpespee || modcv5e || verlv5e = v_itp
     AND poncod = '19506';
    en fait, tns est égale à la somme des 1 sachant qu'on met 1 quand la chaine 92 est trouvé quand on concaténe les 3 champs

    2) je crois bien que oui

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 208
    Points : 92
    Points
    92
    Par défaut
    Re orafrance,

    J'ai compris d'ou vient le fait que je ne retombe pas sur mes pieds au niveau du nombre que j'attend, avec ton code.

    C'est au niveau du decode.
    Le instr va bien renvoyer en quel position se trouve le 92 dans la chaine (','|| ptlref || ',' || ptlref2b || ',' || ptlref2e || ',')

    Seulement si dans le decode les argument sont 0 et 1 alors si 92 se trouve en position 4, decode va rien me renvoyer.
    Donc cela fonctionne bien quand le 92 est dans la colonne ptlref.


    Pour que cela fonctionne il faudrait quelques chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select decode(instr(',' || ptlref || ',' || ptlref2b || ',' || ptlref2e || ',',   ',92,'),0,0,>0,1) FROM teltpe
    Donc avec un "supérieur a 0" en index ca fonctionnerait niquel ! (enfin sauf que decode n'accepte pas les "<,>,=etc")

    Encore merci OraFrance. J'ai plus qu'a trouver la bonne fonction

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    dans ce cas ce serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decode(instr(',' || ptlref || ',' || ptlref2b || ',' || ptlref2e || ',',   ',92,'),0,0,1)
    j'avais oublié un bout en effet

  5. #5
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 208
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par orafrance Voir le message
    dans ce cas ce serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decode(instr(',' || ptlref || ',' || ptlref2b || ',' || ptlref2e || ',',   ',92,'),0,0,1)
    j'avais oublié un bout en effet
    Royal, c'etait ca !

    Encore merci OraFrance

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/10/2014, 17h34
  2. Insertion de valeur dans une table
    Par The Goion dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/05/2007, 21h14
  3. [SQL 2005][ASP.net 2]Insertion de date dans une table
    Par skystef dans le forum Accès aux données
    Réponses: 2
    Dernier message: 29/12/2006, 09h26
  4. [A97] VBA : Commande sql pour insertion de champs dans une table
    Par JeremieT dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/07/2006, 13h12
  5. Insertion valeure dans une table
    Par krfa1 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/03/2005, 10h50

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