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 :

Erreur ORA-06550 PL/SQL


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut Erreur ORA-06550 PL/SQL
    Salut à tous,
    en exécutant mon code ci-dessous sur TOAD (Version 9.6.1.1) :

    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 c_releve is
    select distinct * from ODG_TRENTE_COMPTE;
    begin
        for r in c_releve
        Loop
            spool r.compte ||'.csv';
                select detail from w_releve w, ODG_TRENTE_COMPTE o
                where w.compte=o.compte
                order by compte,ligne;
            spool off;
        end loop;
    end;
    /
    J'ai l'erreur suivante au niveau de la ligne concernant la création du spool :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ORA-06550: line 8, column 15:
    PLS-00103: Encountered the symbol "R" when expecting one of the following:
     
       := . ( @ % ;
    The symbol ":=" was substituted for "R" to continue.
    ORA-06550: line 12, column 15:
    PLS-00103: Encountered the symbol "OFF" when expecting one of the following:
     
       := . ( @ % ;
    The symbol ":=" was substituted for "OFF" to continue.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    En effet, spool est une commande SQL*Plus, mais pas PL/SQL.
    Elle n'est donc pas comprise dans ce dernier.

    Regardez du côté du paquetage UTL_FILE.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Merci Waldar pour ta réponse rapide.
    Je viens d’exécuter le code sur SQL*PLUS et j'ai toujours l'erreur ci-dessous.
    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
     
    Connecté à :
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
     
            spool r.compte ||'.csv';
                  *
    ERROR à la ligne 9 :
    ORA-06550: line 9, column 15:
    PLS-00103: Encountered the symbol "R" when expecting one of the following:
    := . ( @ % ;
    The symbol ":=" was substituted for "R" to continue.
    ORA-06550: line 13, column 15:
    PLS-00103: Encountered the symbol "OFF" when expecting one of the following:
    := . ( @ % ;
    The symbol ":=" was substituted for "OFF" to continue.
     
     
    SQL>

  4. #4
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    Tu ne peux pas utiliser la commande spool sur un bloc PLSQL (c'est une commande sqlplus)

    essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    --Créer le directory pointé sur le chemin (/x/y/z ou c:\x\y ...) cible pour la génération des fichiers
    CREATE DIRECTORY my_directory AS '/x/y/z';
    --Donner les droits d'accès à ton utilisateur
    GRANT READ,WRITE ON my_directory TO utilisateur;
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    DECLARE
       fileh   UTL_FILE.file_type;
     
       CURSOR c_releve
       IS
          SELECT DISTINCT *
                     FROM odg_trente_compte;
     
       CURSOR c_detail (p_compte IN VARCHAR2)
       IS
          SELECT   detail
              FROM w_releve w
             WHERE w.compte = p_compte
          ORDER BY compte, ligne;
    BEGIN
       FOR r IN c_releve
       LOOP
          --Ouvrir un fichier sur le répertoire créer précédemment pour le compte en cours
          fileh := UTL_FILE.fopen ('MY_DIRECTORY', r.compte || '.csv', 'w');
     
          --Boucler sur le détail du compte
          FOR d IN c_detail (r.compte)
          LOOP
             --Ecrir le détail ligne par ligne
             UTL_FILE.put_line (fileh, d.detail);
          END LOOP;
     
          UTL_FILE.fclose (fileh);
       END LOOP;
    EXCEPTION
       WHEN OTHERS
       THEN
          DBMS_OUTPUT.put_line (   'Exception: SQLCODE='
                                || SQLCODE
                                || '  SQLERRM='
                                || SQLERRM
                               );
          RAISE;
    END;

  5. #5
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    N'oublions pas que le fichier se crée au niveau serveur en utilisant UTL_FILE.
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2015, 09h03
  2. Erreur ORA-06550 PLS-00103
    Par ammmm dans le forum PL/SQL
    Réponses: 5
    Dernier message: 16/11/2012, 14h56
  3. Data pump erreur ORA-39001 via SQL developer
    Par shinchan dans le forum Import/Export
    Réponses: 1
    Dernier message: 31/10/2012, 20h15
  4. Réponses: 0
    Dernier message: 20/11/2009, 14h44
  5. Erreur ORA-00900 invalid SQL statement
    Par Lolitaaa dans le forum PL/SQL
    Réponses: 1
    Dernier message: 16/06/2009, 11h09

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