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 :

Problème de syntaxe


Sujet :

PL/SQL Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut Problème de syntaxe
    Bonjour,

    désolé de vous importuner pour un problème de syntaxe malgré avoir parcouru quelques forums afin de trouver une solution à ce petit problème.
    J'utilise donc Oracle XE.
    j'ai donc le code suivant:
    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
     
    create 	procedure checkOk()
    IS	
    	i_row : number := 0;
    	f1 : number;
    	f2 : number;
    	d1 : varchar(3);
    	d2 : varchar(4);
    begin
    	WHILE i_row < person.LAST - 1
    	LOOP
    		f1 := person(i_row).idFamily;
    		d1 := person(i_row).give;
    		f2 := person(i_row+1).idFamily;
    		d2 := person(i_row+1).give;
     
    		IF ((f1 == f2) AND (d1 == 'OK') AND (d2 != d1)) THEN
    			update_donne(person(i_row+1).idPerson,d1);
    		END IF;
    		i_row := i_row + 1;
    	END LOOP;
    end;
    Donc j'ai une table 'person'. mais le problème c'est sûrement la syntaxe.
    Pour l'erreur retournée, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PLS-00222: la fonction nommée 'PERSON' n'existe pas dans cette étendue

    Merci d'avance!

  2. #2
    Membre actif

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 109
    Points : 204
    Points
    204
    Par défaut
    salut

    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
     
     
    CREATE 	procedure checkOk
    AS	
            cursor cur_person IS
            SELECT idperson ,idfamily,give
            FROM person;
            ret_person cur_person%ROWTYPE;
    begin
       open cur_person ;
       loop
         fetch cur_peron INTO ret_person;
         exit when cur_person%NOTFOUND;
         IF ret_person.give='OK' THEN
            UPDATE person 
               SET person.idperson =person.idperson+1
            WHERE idperson=ret_person.idperson;
         end IF;
         end loop;
     
    end;
    tu ajoutes les autres conditions dans le IF

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    Merci pour ta réponse et ton aide sur le Chat.
    Par contre c'est pas exactement ce que je voulais.
    J'ai posté ci-joint une capture d'écran de la table.

    Donc, si j'ai une personne, caractérisée par son idperson, et qui appartient à une famille qui a un idfamiliy, et son attribut 'give' est égal à 'ok', ben le reste des membres de la même famille (les personnes qui ont le même idfamily) doivent prendre la valeur 'ok'.

    Dans capture d'écran ci-jointe, la famille dont l'id est 4 est en norme. Par contre les familles d'idfamily 20, 3 et 5 sont pas en norme.

    Ainsi, si ton code serait à modifier, ça serait plus dans ce sens là:
    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
     
    CREATE 	or replace procedure checkOk
    AS	
            cursor cur_person IS
            SELECT idperson ,idfamily,give
            FROM person;
            ret_person cur_person%ROWTYPE;
    begin
       open cur_person ;
       loop
         fetch cur_person INTO ret_person;
         exit when cur_person%NOTFOUND;
         IF ret_person.give='ok' THEN
            PARCOURIR le reste de la table mettre 'GIVE' à 'ok'
            WHERE idfamily=ret_person.idfamily;
         end IF;
         end loop;
     
    end;
    Merci!!
    Images attachées Images attachées  

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Points : 380
    Points
    380
    Par défaut
    J'ai été sur le forum d'Oracle.
    On m'a proposé une solution sous forme d'une commande SQL que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    update person p set p.give='OK'
      where p.idfamily in
        (select idfamily from person where give='OK');
    Mon but était de procéder avec des curseurs pour voir comment ça marche...

    Je vais quand même marquer que le problème est résolu...

Discussions similaires

  1. Problème de syntaxe - elements['x'].value
    Par Equus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2005, 11h22
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de syntaxe
    Par Mister_FX dans le forum ASP
    Réponses: 5
    Dernier message: 30/06/2004, 10h01
  4. Problème de syntaxe ADO ...
    Par bendev dans le forum ASP
    Réponses: 2
    Dernier message: 15/04/2004, 14h38
  5. Réponses: 2
    Dernier message: 08/03/2004, 15h10

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