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 :

Faire une requête au sein d'une function


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Points : 52
    Points
    52
    Par défaut Faire une requête au sein d'une function
    Bonjour à tous.
    Je cherche à intégrer une requête dans mon code. Malheureusement ni la procédure la fonction en-dessous ne semble accepter une requête. Comment faire ?
    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
     
    CREATE OR REPLACE PROCEDURE stockManager IS
     
    	CURSOR lesCommandes IS
    		SELECT ido FROM ordre WHERE ordreState = 'ECT';
     
    	CURSOR lignesCommandes IS
    		SELECT quantity, ido, idProduct FROM ordreline;
     
    	BEGIN
    		FOR cmd IN lesCommandes
    			LOOP
    				FOR lignes IN lignesCommandes
    					LOOP
    						IF(lignes.quantity < (getStockQuantity(lignes.idproduct))) THEN
    							UPDATE product set stockQuantity = stockQuantity - lignes.quantity WHERE idprod = lignes.idproduct;
    							UPDATE ordre set ordreState = 'T';
    						ELSE
    							DBMS_OUTPUT.PUT_LINE("stock insuffisant");
    						END IF;
    					END LOOP;
    			END LOOP;
    	END;
    /
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE OR REPLACE FUNCTION getStockQuantity(idProduct Product.idProd%type) RETURN NUMBER IS
    	quant number;
    	BEGIN
    		quant := (SELECT stockquantity FROM product WHERE idprod = idProduct);
    		RETURN quant;
    	END;
    /

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE OR REPLACE FUNCTION getStockQuantity(idProduct Product.idProd%type) RETURN NUMBER IS
    	quant number;
    	BEGIN
    		SELECT stockquantity into quant FROM product WHERE idprod = idProduct;
    		RETURN quant;
    	END;
    /

  3. #3
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour,

    Je doute que la fonction puisse etre créée sans erreur

    En Oracle

    c'est plutot
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE OR REPLACE FUNCTION getStockQuantity(idProduct Product.idProd%type) RETURN NUMBER IS
    	quant number;
    	BEGIN
    		 SELECT stockquantity into quant FROM product WHERE idprod = idProduct;
    		RETURN quant;
    	END;
    /


    Maintenant que veux tu faire exactement ?

    une procédure

    tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    begin
    ta_proc;
    end;
    /
    et la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ta_fonction from dual;
    Quelle type de requetes aimerais tu faire ???

    Si tu ne precises pas ....
    ca va etre dur pour les benevoles de t'iader ...

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

Discussions similaires

  1. [AC-2010] Problème à l'exécution d'une requête suppression basée sur une requête sélection
    Par Philippe1975 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 14/06/2013, 22h21
  2. Réponses: 9
    Dernier message: 19/12/2011, 17h11
  3. Réponses: 5
    Dernier message: 18/02/2009, 09h52
  4. Réponses: 1
    Dernier message: 13/02/2009, 10h13
  5. passer d'une requêtes SGL directe en une requête normale
    Par jenniferIUP dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 04/02/2009, 08h26

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