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)