Question

Voici une simple requête de travail sans variables bind:

select * from table1 where time_stamp > sysdate - INTERVAL '1' day;

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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top