Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/05/2011, 12h49   #1
 
Homme
Étudiant
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Portugal

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 33
Points : -2
Points : -2
Par défaut Erreur PLS-00103: Encountered the symbol "AND"

* Bonjour, *

Voici la partie de mon programme avec l'erreur :

Les erreurs signalées :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Rapport d'erreur :
ORA-06550: line 4, column 7:
PLS-00103: Encountered the symbol "AND" when expecting one of the following:
 
   begin case declare else elsif end exit for goto if loop mod
   null pragma raise return select update while with
   <identificateur> <identificateur entre guillemets>
   <variable bind> << close current delete fetch lock insert
   open rollback savepoint set sql execute commit forall merge
   pipe
ORA-06550: line 5, column 9:
PLS-00103: Encountered the symbol "ELSE" 
ORA-06550: line 8, column 7:
PLS-00103: Encountered the symbol "AND" when expecting one of the following:
 
   begin case declare end exit for goto if loop mod null pragma
   raise return select update while with <identificateur>
   <identificateur entre guillemets> <
ORA-06550: line 10, column 6:
PLS-00103: Encountered the symbol "END" 
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
Quelqu'un pourrait m'aider?

* Merci *
kouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 13h38   #2
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Code :
1
2
3
      LC$Requete:= 'DELETE FROM :1 WHERE colonne1 = chaine1 AND colonne2   = chaine2';
      EXECUTE IMMEDIATE LC$Requete USING nomTable;
      AND EXISTS (SELECT 1 FROM INT_QFS_DONNEES_REF WHERE actiontype = 'D' );
Qu'essaies-tu de faire avec la ligne "AND EXISTS..." ?
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 13h57   #3
Membre du Club
 
Inscription : décembre 2010
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 190
Points : 60
Points : 60
bonjour,

Il faut enlever le EXISTS et le AND...
AbouZaid est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 30/05/2011, 14h01   #4
 
Homme
Étudiant
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Portugal

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 33
Points : -2
Points : -2
Je voulais supprimer l'enregistrement si un 'D' est dans la colonne actionType.
kouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h01   #5
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Citation:
Envoyé par kouette Voir le message
Code :
1
2
...      LC$Requete:= 'DELETE FROM :1 WHERE colonne1 = chaine1 AND colonne2   = chaine2';
...
...
Exemples de SQL dynamique natif

[Edit]
Corrigé lien.
[/Edit]
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h10   #6
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Citation:
Envoyé par kouette Voir le message
Je voulai supprimer l'enregistrement si un 'D' est dans la colonne actionType.
Si ce que tu as mis là sont des filtres pour la suppression, il faut que tu les inclues dans la requête de suppression !

(Les mettre après le EXECUTE IMMEDIATE ne sert à rien...)
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 15h39   #7
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Citation:
Envoyé par kouette Voir le message
Je n'arrive pas à ouvrir votre lien mnitu.
...
5. Exemples de SQL dynamique natif
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/05/2011, 16h03   #8
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Citation:
Envoyé par kouette Voir le message
Je n'arrive pas à ouvrir votre lien mnitu.
En mettant mon AND EXISTS avant mon EXECUTE IMMEDIATE, mon code génère toujours une erreur.
Code :
1
2
3
4
IF (chaine3 IS NULL) THEN
      LC$Requete:= 'DELETE FROM :1 WHERE colonne1 = chaine1 AND colonne2   = chaine2';
      AND EXISTS (SELECT 1 FROM INT_QFS_DONNEES_REF WHERE actiontype = 'D' );
      EXECUTE IMMEDIATE LC$Requete USING nomTable;
Ce que tu "EXECUTE IMMEDIATE", c'est la LC$Requete !

Le "AND EXISTS..." n'est pas dans la chaîne.

Est-ce que tu as pu noter que le langage fonctionne par instructions ?

Instruction "LC$Requete:= 'DELETE FROM :1 WHERE colonne1 = chaine1 AND colonne2 = chaine2';" => Affecter la chaîne de caractères LC$Requete.

Instruction "EXECUTE IMMEDIATE LC$Requete USING nomTable;" : exécuter la requête dynamiquement construite dans la variable LC$Requête.

Instruction
AND EXISTS (SELECT 1 FROM INT_QFS_DONNEES_REF WHERE actiontype = 'D' );
=> Retournée en erreur, car ce n'est pas une instruction...
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 16h36   #9
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Code :
1
2
3
4
5
declare
  procedure P
begin
...
end;
Comme d’hab c'est du n’importe quoi. Soit vous est paresseux soit vous devez changer de métier.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/05/2011, 16h49   #10
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Je suis presque d'accord avec toi Mnitu, mais il faut nuancer un peu le propos... kouette est étudiant, peut être ultra débutant en programmation.

Comme tu as l'air d'avoir du mal à trouver tes erreurs de syntaxe, compile morceaux par morceaux.

D'abord, juste le squelette de ta proc.
(En l'occurence ici, comme te le fait remarquer Mnitu :
PROCEDURE ... IS ...
declaration des varialbes
BEGIN
le corps...
END;
)
Tu compiles.

Puis le début de ton traitement, en ajoutant dans le DECLARE juste les variables dont t'as besoin.
Tu compiles.

Puis un peu plus.
Tu compiles.

... et là tu sauras tout de suite d'où vient ton erreur, vu que c'est forcément dans ce que tu as ajouté !
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 19h53   #11
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Citation:
Envoyé par pacmann Voir le message
... kouette est étudiant, peut être ultra débutant en programmation.
...
Je pense que tu veux dire fainéant et non pas étudiant! Tu sais un étudiant bah ... étudie et le fainéant est celui " Qui ne veut pas travailler ou préfère ne rien faire."
Donc si il est étudiant ça ne l'empêche pas de lire le tutoriel, vu qu'il a séché le cours, de tester quelques exemples simple et d'avancer au fur et à mesure de la compréhension du langage. En gros de faire un peu d'effort au lieu de demander aux autres de faire ses devoirs à sa place.
Et ses examples de type
et le && à la place du AND indique une quelconque familiarité avec des autres langages de programmation.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h18.


 
 
 
 
Partenaires

Hébergement Web