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 :

[11g] Erreur "missing right quote" mystère


Sujet :

PL/SQL Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Par défaut [11g] Erreur "missing right quote" mystère
    bonjour à tous, voilà je vous d'être indulgent si je manque des trucs ou si je ne précise pas certains détails car c'est la première fois que je post ici et je suis vraiment novice en SQL..

    voilà mon erreur est celle décrite dans le titre suite à la compilation de ce code dans la commande SQL avec ORACLE de IQMS (logiciel ERP pour entreprise)

    j'ai passé déjà 1 journée entière à essayer de faire fonctionner le code mais celui refuse de s'executer car il trouver toujours une erreur. quand c'est pas celle que j'ai écrite s'en est une autre car j'ai tenté plein de trucs.

    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
    begin 
    insert into arprepost_detail
    (
      arprepost_id,
      ord_detail_id,
      invoice_qty,
      unit_price,
      glacct_ID_sales,
      tax_code_id,
      misc_comment,
      price_per_1000,
      eplant_id)
    select
      i.id as arprepost_id,
      0 as ord_detail_id,
      1 as invoice_qty,
      -round(sum(id.invoice_qty*id.unit_price*NVL(t.discount,0)/100)*100)/100 as unit_price,
      max(iqsys.acct_id_ardisc) as glacct_ID_sales,
      tc.id as tax_codes_id,
      max(ud.auto_discount_desc) as misc_comment,
      -sum(id.invoice_qty*id.unit_price*NVL(t.discount,0)/100)*1000 as price_per_1000,
      max(i.eplant_id) as eplant_id
    from
      arprepost i,
      arprepost_detail id,
      arcusto c,
      tax_codes tc,
      terms t,
      v_ud_arcusto ud,
      iqsys
    where
      -- Linking tables
      id.arprepost_id = i.id and
      i.arcusto_id = c.id and
      id.tax_code_id = tc.id and
      ud.parent_id = c.id and
      i.terms_id = t.id and
      -- Other constraints
      (upper(ud.auto_discount_use)='X') and
      i.id not in
       (select i.id
        from arprepost i, arprepost_detail id, v_ud_arcusto ud
        where id.arprepost_id = i.id and id.misc_comment = ud.auto_discount_desc) and
      -- End constraint
      1=1
    group by
      i.id,
      tc.id';
    end;
    voici mon code.

    il apour objectif d'inserer une ligne dans une table si elle n'existe pas déjà et de rentrer certaines valeurs dedans ( le montant, la quantitée ... )


    j'ai déjà essayé de rajouter en entête des choses du genre "begin immediate ' " ou "begin". le code me semble bon ( il a fonctionné hier et aujourd'hui plus rien, or je n'ai rien changé)

    je vous remercie par avance si vous avez 5 min à me consacrer ^^

    ps : j'ai l'impression que l'erreur pourrait venir de la ligne ou il y 'X' mais sans grande conviction.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 133
    Par défaut
    Ce ne serait pas la ligne 48 tc.id'; ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Par défaut
    en afit non c'est moi qui ai rajouté ça tout à l'heure quand j'avais testé avec begin immediate.

    si je le retire ... j'ai ces erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -- Failed:
    General SQL error.
    ORA-06550: line 31, column 20:
    PL/SQL: ORA-00936: missing expression
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignore
    ORA-06550: line 31, column 19:
    PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
     
       ;
    edit : j'ai retiré le ' après le tc.....

  4. #4
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Par défaut
    Bonjour tout le monde... étant donné que je ne vois pas plus de réponses je m'inquiète un peu ^^ vous manque t-il des détails pour pouvoir répondre à mon problème ?

    merci beaucoup par avance.

  5. #5
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut,

    Tu l'exécutes avec quoi ?
    Essaies de l'exécuter dans un client graphique, supprimer les begin end, enlève / remplace des morceaux pour détecter le moment où ça marche / ça ne marche plus.

  6. #6
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Par défaut
    meric, je l'execute avec le client iqms, une fenêtre qui permet d'envoyer du code sql à la base oracle.

    alors en fait le code que j'ai collé en sujet n'est qu'une partie du code total (une "fonction" ) voici le code total :
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    update arprepost set notes =
    (
    select
      'TOTAL MARCHANDISE : ' ||
      sum(round(id.invoice_qty*id.unit_price,2)) || chr(13) || chr(10) ||
      'ESCOMPTE: ' ||
      round(sum(id.invoice_qty*id.unit_price*NVL(t.discount,0)/100),2) || chr(13) || chr(10) ||
      'TOTAL HT: ' ||
      (
      sum(round(id.invoice_qty*id.unit_price,2)) -
      round(sum(id.invoice_qty*id.unit_price*NVL(t.discount,0)/100),2)
      )
    from
      arprepost i,
      arprepost_detail id,
      arcusto c,
      tax_codes tc,
      terms t,
      v_ud_arcusto ud,
      iqsys
    where
      -- Linking tables
      id.arprepost_id = i.id and
      i.arcusto_id = c.id and
      id.tax_code_id = tc.id and
      ud.parent_id = c.id and
      i.terms_id = t.id and
      -- Other constraints
      upper(ud.auto_discount_use) = 'X' and
      -- Constraint from outside brackets
      i.id = arprepost.id and
      -- End constraint
      1=1
    group by
      i.id
    )
    where
    --  eplant_id = 23 and
      id not in
       (
        select
         i.id
        from
          arprepost i,
          arprepost_detail id,
          v_ud_arcusto ud
        where
          id.arprepost_id = i.id and
          id.misc_comment = ud.auto_discount_desc
       ) and
      id in
       (
        select
         i.id
        from
          arprepost i,
          v_ud_arcusto ud
        where
          i.arcusto_id = ud.parent_id and
          upper(ud.auto_discount_use) = 'X'
       );
     
    insert into arprepost_detail
    (
      arprepost_id,
      ord_detail_id,
      invoice_qty,
      unit_price,
      glacct_ID_sales,
      tax_code_id,
      misc_comment,
      price_per_1000,
      eplant_id)
    select
      i.id as arprepost_id,
      0 as ord_detail_id,
      1 as invoice_qty,
      -round(sum(id.invoice_qty*id.unit_price*NVL(t.discount,0)/100)*100)/100 as unit_price,
      max(iqsys.acct_id_ardisc) as glacct_ID_sales,
      tc.id as tax_codes_id,
      max(ud.auto_discount_desc) as misc_comment,
      -sum(id.invoice_qty*id.unit_price*NVL(t.discount,0)/100)*1000 as price_per_1000,
      max(i.eplant_id) as eplant_id
    from
      arprepost i,
      arprepost_detail id,
      arcusto c,
      tax_codes tc,
      terms t,
      v_ud_arcusto ud,
      iqsys
    where
      -- Linking tables
      id.arprepost_id = i.id and
      i.arcusto_id = c.id and
      id.tax_code_id = tc.id and
      ud.parent_id = c.id and
      i.terms_id = t.id and
      -- Other constraints
      upper(ud.auto_discount_use) = 'X' and
      i.id not in
       (select i.id
        from arprepost i, arprepost_detail id, v_ud_arcusto ud
        where id.arprepost_id = i.id and id.misc_comment = ud.auto_discount_desc) and
      -- End constraint
      1=1
    group by
      i.id,
      tc.id;
     
    exit
    comme ceci le script bug en me marquant "missing right quote" mais si je le divise en deux script et en remplacant les ; de fin de "update" et "insert" par des / , indépendament les codes fonctionnent.

    je sais pas si j'ai été assez clair.

    je pense plus que c'est un problème de structure dans le script qui contient deux actions ( update et insert ) car quand on le divise en deux ça marche. une idée ?

    merci encore

  7. #7
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    C'est spécifique à ton client iqms.

    Pourquoi la version qui marche, splittée avec des / ne te convient pas ? Que veux tu faire de ce script ?

  8. #8
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Citation Envoyé par tiritchi Voir le message
    je l'execute avec le client iqms, une fenêtre qui permet d'envoyer du code sql à la base oracle.
    Chaque outil a sa propre syntaxe.
    Le ';' pour terminer une requête et en enchaîner plusieurs à la suite, le 'exit' sont propres à sqlplus.

    Cordialement,
    Franck.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/04/2010, 15h33
  2. [MySQL] Supprimer les erreurs de syntaxe dues aux quotes
    Par gotenks dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/01/2006, 16h10

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