sql Oracle: en utilisant la variable bind pour les dates
Question
Voici une simple requête de travail sans variables bind:
select * from table1 where time_stamp > sysdate - INTERVAL '1' day;
où time_stamp
est de type DATE
.
I devrait être en mesure de saisir un certain nombre de jours dans la requête ci-dessus à l'aide de la variable se lient.
Alors j'ai essayé ce qui suit et ne semble pas fonctionner:
select * from table1 where time_stamp > sysdate - INTERVAL :days day;
I essayé d'entrer l'entrée numérique à la fois comme 10 et « 10 », par exemple. Vous obtenez ORA-00933 erreur sur 10g.
La solution
Le INTERVAL '1' day
de chaîne dans la requête d'origine est un littéral intervalle, à savoir qu'elle est évaluée par l'analyseur à une valeur unique. Vous ne pouvez pas remplacer une partie de celui-ci avec une variable bind.
Si vous utilisez à la place NUMTODSINTERVAL( 1, 'DAY' )
, alors 1 est un littéral entier que vous devriez être en mesure de remplacer par une variable de liaison.