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

  1. #1
    Membre du Club
    Inscrit en
    juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 51
    Points : 47
    Points
    47

    Par défaut Erreur de syntaxe dans une requête PL/SQL

    Bonjour,

    voila la requête que je souhaite réaliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req := ' matricule := :MonBlock.matricule and nom like % :MonBlock.nom % and (prenom is null or prenom like %:MonBlock.prenom%)'
    et utiliser cette requête dans mon trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DECLARE
           req VARCHAR2(1000);
    BEGIN
          GO_BLOCK('LISTE_PERSONNE');
          Set_Block_Property('LISTE_PERSONNE', DEFAULT_WHERE, req);
          do_key('execute_query');
    END;

    J'aimerai avoir de l'aide pour corriger la syntaxe de ma requête pour que l'exécution se déroule normalement. Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    DBA Oracle
    Inscrit en
    avril 2013
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 879
    Points : 956
    Points
    956

    Par défaut

    Peux-tu nous donner le message d'erreur que tu as ?

    Sinon, le := doit être remplacé par = car dans ton WHERE tu veux une condition d'égalité, donc =, et pas une affectation.

    Je pense qu'il faut remplacer ta variable req par
    req := ' matricule=' := :MonBlock.matricule || ' and nom like %' := :MonBlock.nom || '% and (prenom is null or prenom like %' := :MonBlock.prenom'%)' --> ça va peut-être planter, mais je pense que tu as compris la solution.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre du Club
    Inscrit en
    juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 51
    Points : 47
    Points
    47

    Par défaut

    Quand j'utilise votre proposition, j'obtiens l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    erreur 103 ligne 6, colonne 30
         Symbole "=" rencontré à l place d'un des symboles suivants:
         .(*@%&=.+;</> in mod not rem an exponent (**) <> or != or ~=>=<=<> and or like between is null is not || is dangling
         Symbole ""( inséré avant "=" pour continuer.
    erreur 103 ligne 6, colonne 151
          Symbole """ rencontré à l place d'un des symboles suivants:
         .(*@%&=.+;</> in mod not rem an exponent (**) <> or != or ~=>=<=<> and or like between is null is not || is dangling
         Symbole ""( inséré avant "=" pour continuer.

  4. #4
    Membre du Club
    Inscrit en
    juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 51
    Points : 47
    Points
    47

    Par défaut

    j'ai enfin trouvé la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    req := ' matricule like ''%'  || :MonBlock.matricule || '%''';
    req := req || ' and nom like ''%'  || :MonBlock.nom || '%''';
    req := req || ' and (prenom is null or prenom like ''%'  || :MonBlock.prenom || '%'')';

  5. #5
    Membre éprouvé
    Homme Profil pro
    DBA Oracle
    Inscrit en
    avril 2013
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 879
    Points : 956
    Points
    956

    Par défaut

    Cool, mais je ne vois pas pourquoi tu ne crées pas ta requête en une seule fois; pourquoi avoir fait req := req ...?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  6. #6
    Membre du Club
    Inscrit en
    juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 51
    Points : 47
    Points
    47

    Par défaut

    Parce que je n'arrive pas jusqu'à présent à bien échapper les % de ma requête

  7. #7
    Membre éprouvé
    Homme Profil pro
    DBA Oracle
    Inscrit en
    avril 2013
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 879
    Points : 956
    Points
    956

    Par défaut

    Depuis Oracle 10, on peut banaliser N caractères spéciaux en une fois via la syntaxe
    q'caractère_débuttexte avec caractères spéciaux 'caractère_fin'

    ATTENTION : si caractère_début est [ alors caractère_fin est ] mais on peut utiliser | et | voir même des lettres classiques.

    Regarde ce lien https://livesql.oracle.com/apex/live...LAMZKRF6P.html.

    Exemple : BEGIN
    DBMS_OUTPUT.PUT_LINE ( q'[What's a quote among friends?]');
    END;
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  8. #8
    Membre du Club
    Inscrit en
    juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 51
    Points : 47
    Points
    47

    Par défaut

    Citation Envoyé par Ikebukuro Voir le message
    Depuis Oracle 10, on peut banaliser N caractères spéciaux en une fois via la syntaxe
    Je suis sur 6i

  9. #9
    Membre éprouvé
    Homme Profil pro
    DBA Oracle
    Inscrit en
    avril 2013
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DBA Oracle
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 879
    Points : 956
    Points
    956

    Par défaut

    Ah oui, quand même
    Date de sortie Oracle 6 : 1988!!

    Ce ne serait pas plutôt la 9i?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  10. #10
    Modérateur

    Homme Profil pro
    Consultant Teradata
    Inscrit en
    septembre 2008
    Messages
    7 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Teradata

    Informations forums :
    Inscription : septembre 2008
    Messages : 7 692
    Points : 16 033
    Points
    16 033

    Par défaut

    Il parle de Forms.

  11. #11
    Membre du Club
    Inscrit en
    juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 51
    Points : 47
    Points
    47

    Par défaut

    Citation Envoyé par Ikebukuro Voir le message

    Ce ne serait pas plutôt la 9i?
    l'entreprise à tenter de migrer les applications vers la 11g mais les navigateurs actuels n'affichent pas les formulaires . Elle a ensuite tenter de migrer vers la 12c, et là l'installation n'a pas réussi après des semaines de tentative. Donc on galère toujours sur la 6i avec la BDD 10g, en attendant le père noël

  12. #12
    McM
    McM est actuellement connecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    juillet 2003
    Messages
    4 167
    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 167
    Points : 6 661
    Points
    6 661
    Billets dans le blog
    3

    Par défaut

    Ah oui, le problème des navigateurs qui ont désactivé le NPAPI .. sauf Flash bien sûr, les jeux rapportent beaucoup trop

    IE fonctionne encore (ce que nos clients utilisent), et Firefox ESR 32 bits (ce que j'utilise).
    https://www.java.com/fr/download/help/firefox_java.xml
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB

  13. #13
    Membre du Club
    Inscrit en
    juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 51
    Points : 47
    Points
    47

    Par défaut

    McM,

    tous les utilisateurs de l'entreprise utilisent Windows 10 64bits. En passant j'ai aussi remarqué que lorsqu'on utilise une version supérieure de forms , la version antérieure ne l'ouvre pas et ne le compile pas aussi. ça aussi ça n'encourage pas les Développeurs de l'entreprise pour migrer.

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

Discussions similaires

  1. Erreur de syntaxe dans une requête
    Par dark_geek dans le forum ASP
    Réponses: 10
    Dernier message: 28/05/2009, 18h15
  2. Erreur de syntaxe dans une requête
    Par Equinoxe5 dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/04/2009, 13h09
  3. Réponses: 8
    Dernier message: 09/09/2008, 09h28
  4. Erreur de syntaxe dans une requête SQL
    Par Gabout dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 08/01/2008, 17h19
  5. Erreur de syntaxe dans une requête SQL
    Par amnesias dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/01/2007, 12h50

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