Bonjour,

Voilà, cela fait quelque jour que je galère en cherchant à construire en vain une requête en dynamique pour l'utiliser avec un EXECUTE STATEMENT dont 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
 
BEGIN
 VARSQL='SELECT T.ROWID, T.RUB_POSITION, T.TYPE_SAL, T.CODE_RUB,  R.DESIGNATION, T.USERNAME, T.MODIFIED, ';
VARSQL=:VARSQL||'R.DESCRIPTION,R.CALCUL_ACTIVER';
 VARSQL=:VARSQL||' FROM PA_TB_TYPESAL_DET T INNER JOIN PA_TB_PROF R ON T.CODE_RUB=R. CODE_RUB;
 
 if (:type_salaire<>'' AND :activer<>'') then
   VARSQL=:VARSQL||' where T.TYPE_SAL = '''|| TYPE_SALAIRE ||''' AND   R.calcul_activer = '''|| ACTIVER;
 
 if (:type_salaire='' AND :activer<>'') then
   VARSQL=:VARSQL||' where R.calcul_activer = '''|| ACTIVER;
 
 if (:type_salaire<>'' AND :activer='') then
   VARSQL=:VARSQL||' where T.TYPE_SAL = '''|| TYPE_SALAIRE;
 
 VARSQL=:VARSQL||' ORDER BY '|| ORDER_BY ;
 
 FOR EXECUTE STATEMENT VARSQL
  into :rowid,:rub_position,:type_sal,:code_rub,:calcul_activer, :description,:username,:modified
  DO
  suspend;
 
END
Si je désactive les chaines se trouvant dans les tests des IF's en ne laissant que la chaine de l'ORDER BY ca marche bien.

Si je met le même nombre de côtes que celle qui se trouve dans l'ORDER BY dans les chaines que j'ai désactiver ca ne marche pas .

Problème de côtes mais je ne sais pas comment exactement.

Merci pour votre aide