Problème avec EXECUTE STATEMENT
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:
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