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 :

PL/SQL cursor


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
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Par défaut PL/SQL cursor
    J'ai essayé de mettre en pratique les cursor en faisant :

    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
    29
     
    DECLARE 
     TYPE recordTypeFlux IS RECORD
     (
       libelle type_flux.libelle_type_flux%TYPE,
       code type_flux.code_type_flux%TYPE
     );
     
     CURSOR CurseurTypeFlux IS select libelle_type_flux, code_type_flux from type_flux;
     
     record recordTypeFlux%ROWTYPE;
     valeurcount INTEGER;
     
     
     BEGIN  
     
        OPEN CurseurTypeFlux;  
     
        LOOP  
           FETCH CurseurTypeFlux INTO record;
           EXIT WHEN CurseurTypeFlux%NOTFOUND;
     
           insert into tmp_type_flux(tf_libelle , tf_code) values(record.libelle,record.code);
     
        END LOOP;
     
        CLOSE CurseurTypeFlux;
     
     END;
    Et je me retrouve avec une erreur :

    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
     
     
    PL/SQL: SQL Statement ignored
     
     
     record recordTypeFlux%ROWTYPE;
            *
    ERREUR à la ligne 10 :
    ORA-06550: Ligne 10, colonne 9 :
    PLS-00310: avec l'attribut %ROWTYPE, 'RECORDTYPEFLUX' doit nommer un curseur ou une table ou une variable curseur
    ORA-06550: Ligne 10, colonne 9 :
    PL/SQL: Item ignored
    ORA-06550: Ligne 19, colonne 35 :
    PLS-00320: déclaration de type de cette expression est incomplète ou mal structurée
    ORA-06550: Ligne 19, colonne 8 :
    PL/SQL: SQL Statement ignored
    ORA-06550: Ligne 22, colonne 78 :
    PLS-00320: déclaration de type de cette expression est incomplète ou mal structurée
    ORA-06550: Ligne 22, colonne 85 :
    PL/SQL: ORA-00984: Un nom de colonne n'est pas autorisé ici
    ORA-06550: Ligne 22, colonne 8 :
    PL/SQL: SQL Statement ignored

  2. #2
    thg
    thg est déconnecté
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 46
    Par défaut
    Le type "%ROWTYPE" ne s'applique que pour des tables ..

    Il faut donc remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    record recordTypeFlux%ROWTYPE;
     
    par 
     
    record recordTypeFlux;
    hope this help ...

  3. #3
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    2 petites remarques :
    1. tu aurais pu éviter de créer un type en déclarant ton record de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    record CurseurTypeFlux%rowtype;
    2. de manière très condensée, tu aurais également pu faire (sans avoir besoin de déclarer de variables) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BEGIN  
       FOR record in (select libelle_type_flux, code_type_flux from type_flux) LOOP
          insert into tmp_type_flux(tf_libelle , tf_code) values(record.libelle,record.code); 
       END LOOP; 
    END;
    NB : il existe un forum oracle, plus adapté aux problèmes PL/SQL

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

Discussions similaires

  1. PL/SQL : Cursor
    Par looking_4truth dans le forum Oracle
    Réponses: 1
    Dernier message: 26/05/2011, 08h28
  2. pB pL:sql CURSOR
    Par gdavezac dans le forum PL/SQL
    Réponses: 13
    Dernier message: 27/02/2009, 13h29
  3. Réponses: 1
    Dernier message: 05/12/2005, 12h50
  4. les cursor sur sql serveur
    Par hoummass dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/10/2005, 17h10
  5. [PL/SQL] requete qui marche mais pas dans un cursor
    Par victor.ward dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/09/2005, 22h21

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