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 :

PLS-00103 erreur incomprise sur PL/SQL developer


Sujet :

PL/SQL Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut PLS-00103 erreur incomprise sur PL/SQL developer
    Bonjour,

    J'ai créé un package sql, où j'ai declaré deux fonctions (la première prend la liste des colonnes d'une table et la table elle même et retourne un varchar2(= noms des colonnes séparées par des virgules et la deuxième prend les même paramètres et retourne un clob)et un type composé(VARRAY): voici le code

    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
    41
    42
    43
    create or replace package Generic_export is
     
      type ColumnList is VARRAY(50) OF VARCHAR2(30); 
      function getColumnsNames( tab in varchar2, cols in ColumnList) return varchar2;
      function ExportToXml(tab in varchar2, cols in ColumnList) return clob;
     
    end Generic_export;
     
    create or replace package body Generic_export is
     
    -- Function and procedure implementations
    function getColumnsNames( tab in varchar2, cols in ColumnList) return varchar2 is
      l_columns varchar2(2000);
      nbrcol integer;
      i integer := 1;
    begin
      l_columns := '';
      select count(column_name) into nbrcol from all_tab_columns where table_name=tab;
      if i<=50 and cols(i)!= '' then
       loop
        l_columns := l_columns ||','|| cols(i);
        i          := i+1;
       end loop;
      end if;
      return l_columns;
    end getColumnsNames;
     
    function ExportToXml(tab in varchar2, cols in ColumnList) return clob is
      l_result clob;
      l_queryCtx DBMS_XMLquery.ctxType;
      l_sqlQuery varchar2(2000);
      l_columns varchar2(2000);
      -- set up the query context...!
      l_columns  := getColumnsNames(tab, cols);
      l_sqlQuery := ('select '||l_columns||' from '||tab);
      l_queryCtx := DBMS_XMLQuery.newContext(l_sqlQuery);
      -- get the result..!
      l_result := DBMS_XMLQuery.getXML(l_queryCtx);
      DBMS_XMLQuery.closeContext(l_queryCtx);  -- you must close the query handle..
      return(l_result);
    end ExportToXml;
     
    end Generic_export
    voici l'erreur que j'ai lors de la compilation

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Error: PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants :
     
              constant exception <identificateur>
              <identificateur entre guillemets> table LONG_ double ref char
              time timestamp interval date binary national character nchar
           Symbole "<identificateur>" a été substitué à "=" pour continuer.
    Line: 28
    Text: l_columns  := getColumnsNames(tab, cols);
     
    Error: PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants :
     
              constant exception <identificateur>
              <identificateur entre guillemets> table LONG_ double ref char
              time timestamp interval date binary national character nchar
           Symbole "<identificateur>" a été substitué à "=" pour continuer.
    Line: 29
    Text: l_sqlQuery := ('select '||l_columns||' from '||tab);
     
    Error: PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants :
     
              constant exception <identificateur>
              <identificateur entre guillemets> table LONG_ double ref char
              time timestamp interval date binary national character nchar
           Symbole "<identificateur>" a été substitué à "=" pour continuer.
    Line: 30
    Text: l_queryCtx := DBMS_XMLQuery.newContext(l_sqlQuery);
     
    Error: PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants :
     
              constant exception <identificateur>
              <identificateur entre guillemets> table LONG_ double ref char
              time timestamp interval date binary national character nchar
           Symbole "<identificateur>" a été substitué à "=" pour continuer.
    Line: 32
    Text: l_result := DBMS_XMLQuery.getXML(l_queryCtx);
     
    Error: PLS-00103: Symbole "." rencontré à la place d'un des symboles suivants :
     
              constant exception <identificateur>
              <identificateur entre guillemets> table LONG_ double ref char
              time timestamp interval date binary national character nchar
           Symbole "<identificateur>" a été substitué à "." pour continuer.
    Line: 33
    Text: DBMS_XMLQuery.closeContext(l_queryCtx);  -- you must close the query handle..
     
    Error: PLS-00103: Symbole "(" rencontré à la place d'un des symboles suivants :
     
              constant exception <identificateur>
              <identificateur entre guillemets> table LONG_ double ref char
              time timestamp interval date binary national character nchar
           Symbole "<identificateur>" a été substitué à "(" pour continuer.
    Line: 34
    Text: return(l_result);
     
    Error: PLS-00103: Symbole "END" rencontré à la place d'un des symboles suivants :
     
              begin function package pragma procedure subtype type use
              <identificateur> <identificateur entre guillemets> form
              current cursor
    Line: 35
    Text: end ExportToXml;
     
    Error: Hint: Comparison with NULL in 'getColumnsNames'
    Line: 13
    Text: if i<=50 and cols(i)!= '' then
     
    Error: Hint: Variable 'DBMS_XMLQuery.closeContext' is declared but never used in 'ExportToXml'
    Line: 33
    Text: DBMS_XMLQuery.closeContext(l_queryCtx);  -- you must close the query handle..
    Je ne comprends pas où est le problème
    toute aide serait la bien venue

    Merci d'avance

  2. #2
    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
    Points : 3 609
    Points
    3 609
    Par défaut
    Tu n'as pas l'impression qu'il te manque un begin dans ta 2è fonction ?

    Une simple relecture attentive de ton code t'aurais permis de retrouvé l'erreur. Je te rapelle que le forum n'a pas vocation à debugger le code des uns ou des autres.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Points : 20
    Points
    20
    Par défaut Un peu de diplomatie que diable !
    La première paragrahe de la réponse est très utile et résous sans doute le problème.

    La première partie de la deuxième paragraphe c'est de la logique - mais après plusieurs heures, il est très simple de passer sur les plus bêtes des erreurs ; Combien de fois j'ai débuggé du code à 4h du matin depuis plusieurs heures avant de m'apercevoir qu'il me manque un point-virgule sur une ligne de code, ou une parenthèse sur une requête SQL : De temps en temps, rien ne vaut un regard externe car on n'est pas à 110% de nos capacités 110% du temps.

    La seconde partie de la deuxième phrase me choque, on aurait pu s'en passer : Cela reviens à dire "Si tu a un problème avec ton code, ne viens pas nous voir car ce n'est pas à nous de t'aider". La personne qui a posé le question a eu sa réponse, il a sans doute vu sa bêtise, et d'après son profil, il n'est plus jamais revenu.

    Bravo.

  4. #4
    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
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par dlpage Voir le message
    La seconde partie de la deuxième phrase me choque, on aurait pu s'en passer : Cela reviens à dire "Si tu a un problème avec ton code, ne viens pas nous voir car ce n'est pas à nous de t'aider".
    Non, je lui demandais juste de respecter les règles de ce forum :

    Citation Envoyé par orafrance
    - Eviter tant que possible les problèmes strictement liés à des erreurs de syntaxe. En effet, les erreurs sont assez clairement signalées par SQL*Plus et en général, chacun est capable de trouver la solution en cherchant un minimum. Ces sujets n'intéressent que l'auteur de celui-ci et sont donc contraires à l'esprit communautaire du forum et par ailleurs, l'expérience personnelle est essentielle pour évoluer.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Exact, c'est comme de répondre aux exercices des étudiants.. d'ailleurs, la charte à changée, parce que je ne trouve plus cette "limitation" ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par McM Voir le message
    More Code : More Bugs. Less Code : Less Bugs
    More Tests : Less Bugs

Discussions similaires

  1. erreur 3134 sur instruction SQL insert into
    Par tiff13 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/02/2010, 11h28
  2. [AC-2007] Erreur 3134 sur commande SQL
    Par Cagou-77 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/01/2010, 22h25
  3. Erreur de connexion avec SQL Developer
    Par 4rocky4 dans le forum Connexions aux bases de données
    Réponses: 1
    Dernier message: 25/05/2009, 13h41
  4. Erreur incomprise sur le d_type
    Par lowboy dans le forum C
    Réponses: 7
    Dernier message: 22/07/2007, 10h42
  5. [SQL] Erreur repetitive sur requete SQL (Count et Sum)
    Par hools dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2007, 11h57

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