salut,
je vois que tu fais des comparaison double sur les dates mais je le fonctionnement des opérateur ne le permet pas car c'est des opérateurs binaire que tu utilises
a < b < c ne correspond pas à a < b et b < c, tu dois écrire:
de plus quand tu veux affecter un select tu as la syntaxe:
select valeur into var from...
j'ai viré la variable avec la faute d'orthographe, elle ne sert à rien de toute façon, tu peux faire le calcul dans l'insert
ton code devrait donc ressembler à:
1 2 3 4 5 6 7 8 9 10 11 12 13
| CREATE PROCEDURE cacul_quantite(p_article int, p_magasin int, p_date date)
BEGIN
/** declaration de mes variables**/
declare dernier_date date;
DECLARE dernier_stock integer;
declare q_vendue integer;
declare q_livrer integer;
SELECT max(date_jour) into dernier_date FROM stock WHERE ((p_article=stock.numArticle) AND (p_magasin=stock.numMagasin));
SELECT quantite_stock into dernier_stock FROM stock WHERE ((p_article=stock.numArticle) AND (p_magasin=stock.numMagasin) AND (dernier_date=stock.date_jour));
SELECT sum(quantite_v) into q_vendue FROM vente WHERE ((p_article=vente.numArticle) AND (vente.numMagasin =p_magasin) AND (dernier_date<= vente.date_v <= p_date));
SELECT sum(quantite_l) into q_livrer FROM livraison WHERE ((p_article =livraison.numArticle) AND (livraison.numMagasin = p_magasin) AND ( dernier_date <= livraison.date_l <= p_date));
INSERT INTO STOCK VALUES (p_article,p_magasin, p_date, dernier_stock + q_livrer - q_vendue);
end |
Partager