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

PostgreSQL Discussion :

Pb de curseur et de fetch sous postgres 7.4


Sujet :

PostgreSQL

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Pb de curseur et de fetch sous postgres 7.4
    Bonjours a toutes et tous

    voici mon pb : je cherche a faire une fonvtion qui va me récupérer des valeur dans des table lors d'un insert. J'ai donc un trigger mais comme je peux avoir plusieur ligne de resultat a traiter je dois donc utiliser un curseur. Seulement voila le problème c'est que cela ne marche point.
    Auriez vous une idée? Je vous joint le code qui me parrais le plus problable de ce qui devrai etre correcte syntaxiquement mais j'ai toujour une erreur au niveau du fatch quoi que je fasse apres.
    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
    DECLARE
    cur 		refcursor;		
    num_lot_fab	"Production"."PR_Sortie_stock"."num_lot_fabrication"%TYPE;
    code_article	"Production"."PR_Ligne_fabrication"."code_article"%TYPE;
    pcb		"Production"."PR_Ligne_fabrication"."pcb"%TYPE;
    nb_unite_fab	"Production"."PR_Ligne_fabrication"."nb_unite_fabrique"%TYPE;
    alveole		"Production"."PR_Ligne_fabrication"."new_alveole"%TYPE;
     
    BEGIN
    	UPDATE "Production"."PR_Stock_Courant" SET "nb_uc" = "nb_uc"-NEW."nb_uc"
    	 WHERE "Numero_Lot" = NEW."num_lot_fabrication"
    	  AND "Code_Alveole" = NEW."Code_Alveole"
    	  AND "qte_uc"=New."poids_uc";
     
    	IF NEW."type_sortie_stock" = 1
    	THEN
    		BEGIN work;
    		OPEN cur FOR
    		SELECT "num_lot_fabrication"|| EXTRACT(DOY FROM now()),"PF_Articles"."Code_article","PR_Ligne_fabrication"."pcb", "PR_Ligne_fabrication"."nb_unite_fabrique", "PR_Ligne_fabrication"."new_alveole"
    		FROM "Production"."PR_Ligne_fabrication","ProduitsFinis"."PF_Articles"
    		WHERE "PR_Ligne_fabrication"."code_article"="PF_Articles"."Code_article"
    		AND "PR_Ligne_fabrication"."num_lot_fabrication"=NEW."num_lot_fabrication";
     
    		FETCH ALL IN cur; --INTO num_lot_fab,code_article,pcb,nb_unite_fab,alveole;
     
    		WHILE cur%FOUND
     
    		LOOP
     
    			INSERT INTO "ProduitsFinis"."PF_Entree_Stock"
    			("Numero_Lot","Code_Article", "nb_uc", "qte_uc","type_entree_stock","date_entree_stock","heure_entree_stock","Code_Alveole")
    			VALUES (num_lot_fab, code_Produit,nb_unite_fab, pcb,NEW."type_sortie_stock", now(), NOW(),alveole);
    		ind = ind + 1
    		END LOOP;
    		CLOSE cur;
    		COMMIT work;
    	END IF;
     
    RETURN NEW;
    END;
    Merci d'avance de vos réponses

  2. #2
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    C'est normal, on ne "fetch" pas dans un curseur, on "fetch" le contenu du curseur vers des variables. De plus, FETCH ALL n'existe pas en plpgsql, il te faut boucler et faire le FETCH à chaque tour. Enfin, le mot-clé FOUND ne s'utilise pas de cette manière.

    Sinon, pour t'orienter vers une solution : dans ton cas, l'utilisation d'un curseur n'est pas obligatoire, il est tout à fait possible de s'en tirer avec un simple SELECT. Pour savoir comment procéder, la documentation donne un exemple que tu pourras adapter : Boucler Dans les Résultats de Requêtes

    Bon courage

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    merci pour cette réponse rapide
    bonne journée et bon we

  4. #4
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    je t'en prie

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

Discussions similaires

  1. format date sous postgres sql
    Par ruppert62 dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 27/05/2005, 12h04
  2. Problème de quotes sous PostGre
    Par Philhz dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 11/07/2004, 13h03
  3. Deplacer un curseur dans un RichEdit sous visual c
    Par tweek dans le forum Windows
    Réponses: 7
    Dernier message: 14/01/2004, 00h29
  4. recuperer du excel sous postgres ?
    Par in dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 10h58
  5. Integrité référentiel sous postgres
    Par josoft dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 19/07/2003, 12h04

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