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 :

Chargement d'une table en mémoire


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    HRS
    HRS est déconnecté
    Membre chevronné
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Par défaut Chargement d'une table en mémoire
    pour optimiser un traitement, je veux charger une petite table (TC_0360)
    de 2 colonnes en mémoire. je déclare donc une table de record.

    c'est dans la boucle for de chargement que j'ai une erreur de compile


    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
    declare
     
    type L0360 is record (
        DMF_NAT TC_0360.DMF_NAT%TYPE,
        DMF_LIB TC_0360.DMF_LIB%TYPE
        );
    type TL0360 IS TABLE OF L0360 INDEX by binary_integer;
    WTL0360 TL0360;
    CURSOR C0360 IS SELECT DMF_NAT, DMF_LIB FROM TC_0360;    
    begin
     
    for IC0360 in C0360 LOOP
       WTL0360(IC0360).DMF_NAT := IC0360.DMF_NAT;
       WTL0360(IC0360).DMF_LIB := IC0360.DMF_LIB;
    END LOOP;

  2. #2
    HRS
    HRS est déconnecté
    Membre chevronné
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Par défaut
    j'ai confondu l'indice curseur et l'indice de la table interne

    ce qui suit semble fonctionner

    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
    declare
     
    CURSOR CURSEUR_0360 IS SELECT DMF_NAT, DMF_LIB FROM TC_0360; 
    type TL0360 IS TABLE OF CURSEUR_0360%ROWTYPE INDEX by binary_integer;
     
    WTL0360 TL0360;
     
    MAX_0360 binary_integer := 0;
     
    begin
     
    for ic in CURSEUR_0360 loop
      MAX_0360:= MAX_0360+1;
      wTL0360(MAX_0360) := ic; 
    end loop;

  3. #3
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Tu a tout intérêt à utiliser BULK COLLECT pour remplir en une seule fois ton tableau :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    declare
     
    CURSOR CURSEUR_0360 IS SELECT DMF_NAT, DMF_LIB FROM TC_0360; 
    type TL0360 IS TABLE OF CURSEUR_0360%ROWTYPE INDEX BY binary_integer;
     
    WTL0360 TL0360;
     
    begin
     
    OPEN CURSEUR_0360;
    FETCH CURSEUR_0360 BULK COLLECT INTO WTL0360;
    CLOSE CURSEUR_0360;

Discussions similaires

  1. Chargement d'une table à partir d'un fichier texte
    Par Trebor_ dans le forum Débuter
    Réponses: 2
    Dernier message: 21/02/2008, 14h31
  2. [SQL-SERVER 2000] Mettre une table en mémoire
    Par usf70 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 07/12/2007, 23h31
  3. Chargement d'une table de faits
    Par JoeLF dans le forum Oracle
    Réponses: 3
    Dernier message: 22/10/2007, 11h26
  4. Chargement d'une table avec de très nombreux champs
    Par Davou dans le forum Débuter
    Réponses: 4
    Dernier message: 04/07/2007, 15h59
  5. nologging pour chargement d'une table temporaire
    Par psafp dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/06/2007, 09h16

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