Bonjour dans un SQL dynamique j'utilise le code suivant qui ne fonctionne pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
wardynqr :=
        ' select floor(rank()over(order by num_f)/:wval_tranche)tranche,c.* '||
        ' from table1 c '||
        ' where num_soc =  :wvaleur '||
        ' and cpt_typ in (select cod_tuple1 '||
        '                   from pfaccau_fct '||
        '                   where cod_tab    = :C_PRUCRE '||
        '                   and cod_tuple2 = :C_AR) '||
        ' order by NUM_F, CPT_NUM_SEQ' ||
        ' )'
        execute immediate wardynqr
        bulk collect into col_cpt using wvaleur, C_PRUCRE, C_AR,wval_tranche;
cependant en remplacant wval_tranche par sa valeur cela fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
wardynqr :=
        ' select floor(rank()over(order by num_f)/'&wval_tranche&')tranche,c.* '||
        ' from table1 c '||
        ' where num_soc =  :wvaleur '||
        ' and cpt_typ in (select cod_tuple1 '||
        '                   from pfaccau_fct '||
        '                   where cod_tab    = :C_PRUCRE '||
        '                   and cod_tuple2 = :C_AR) '||
        ' order by NUM_F, CPT_NUM_SEQ' ||
        ' )'
        execute immediate wardynqr
        bulk collect into col_cpt using wvaleur, C_PRUCRE, C_AR,wval_tranche;
Les Bind variables ne peuvent être utilisées que pour des conditions apres un signe = != >< etc... On ne peut pas les utilisées pour le calcul d'un champs ?