Bonjour à tous,

Voilà, je galère depuis hier pour créer une Procédure stockée. En voici le code :

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
SET TERM ^ ;
 
ALTER PROCEDURE SET_PRICE (
    ID_ART INTEGER)
AS
declare variable marge dec_15_4;
declare variable marge_1 dec_15_4;
declare variable marge_2 dec_15_4;
declare variable marge_3 dec_15_4;
declare variable marge_4 dec_15_4;
declare variable cump dec_15_2;
declare variable tot_1 dec_15_2;
declare variable tot_2 dec_15_2;
declare variable qte_1 dec_15_2;
declare variable qte_2 dec_15_2;
begin
  /* Procedure Text */
  TOT_1 = 0;
  QTE_1 = 0;
  TOT_2 = 0;
  QTE_2 = 0;
 
  MARGE_1=-1 ;
  MARGE_2=-1 ;
  MARGE_3=-1 ;
  MARGE_4=-1 ;
 
 
  SELECT ((P_VENTE-P_HA)/P_HA), (PV1-P_HA)/P_HA,
         (PV2-P_HA)/P_HA, (PV3-P_HA)/P_HA,
         (PV4-P_HA)/P_HA
  FROM FART
  WHERE (ID_ART=:ID_ART) AND
        (P_HA <> 0) AND
        (NOT P_HA IS NULL)
  INTO MARGE, MARGE_1, MARGE_2, MARGE_3, MARGE_4;
 
  if (MARGE_1<0) then MARGE_1=-1 ;
  if (MARGE_2<0) then MARGE_2=-1 ;
  if (MARGE_3<0) then MARGE_3=-1 ;
  if (MARGE_4<0) then MARGE_4=-1 ;
 
  SELECT SUM(QTE*P_UNIT), SUM(QTE)
  FROM FDET_H
  WHERE (ID_ART=:ID_ART) AND
        (QTE > 0) AND (NOT QTE IS NULL) AND
        (P_UNIT <> 0) AND (NOT P_UNIT IS NULL)
  HAVING (SUM(QTE) <> 0)
  INTO TOT_1,  QTE_1;
 
  SELECT SUM(QTE*P_UNIT), SUM(QTE)
  FROM T_STK_INIT
  WHERE (ID_ART=:ID_ART) AND
        (QTE > 0) AND (NOT QTE IS NULL) AND
        (P_UNIT <> 0) AND (NOT P_UNIT IS NULL)
  HAVING (SUM(QTE) <> 0)
  INTO TOT_2,  QTE_2;
 
  CUMP = TOT_1/QTE_1;
  if (NOT QTE_2 IS NULL ) then CUMP = (TOT_1 + TOT_2)/(QTE_1 + QTE_2);
 
 
  UPDATE FART SET
         P_HA=:CUMP,
         P_VENTE=:CUMP * (1+:MARGE),
         PV1=:CUMP * (1+:MARGE_1),
         PV2=:CUMP * (1+:MARGE_2),
         PV3=:CUMP * (1+:MARGE_3),
         PV4=:CUMP * (1+:MARGE_4)
  WHERE ID_ART=:ID_ART;
 
 
  suspend;
end^
 
SET TERM ; ^
A l'exécution à l'aide d'une TZSQLProcesseur, je reçois le message : Invalid Request BLR at ... Bad Parameter while parsing procedure

Merci de votre aide.

W7, D7, FB2.5 et Outils Zeos 7.1.2