Bonjour à tous.
J'essaye de faire une procédure qui me renvoie une valeur en utilisant EXECUTE STATEMENT.
Ma proc est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SET TERM ^ ; create or alter procedure CalFormula( Formula_str varchar(1024)) returns ( xValue numeric(16,2)) as declare variable SQL varchar(1024); begin SQL = 'select '||Formula_str||' from Table1 '; EXECUTE STATEMENT SQL into :xValue; suspend; end^ SET TERM ; ^
sachant que j'ai deux tables
Table1
--------------------------
Field_Name | Field_Value
--------------------------
Value1.......|.......50
Value2.......|.......30
Value3.......|.......10
Value4.......|.......70
Table2
----------------------------------------------
Formula_Name | Formula_Value
----------------------------------------------
Formula1 .......|.......Value1*2
Formula2 .......|.......Value2*Value1/10
Formula3 .......|.......Value3*Value2/Value1
Formula4 .......|.......Value14/Value3
L'utilisateur peut ajouter d'autres formules.
J'ai essaye le test dans une requete,quand j'utilise un parametre predifinie comme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select Formula_Name, xValue from Table2, CalFormula ('Value1*2')
sa marche tres bien,
mais quand j'ai essaye d'execute la requete suivante j'obtiens un message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select Formula_Name, xValue from Table2, CalFormula (Table2.Formula_Value)
Partager