Frage

Hier ist eine einfache Arbeits Abfrage ohne Bind-Variablen:

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

Dabei gilt time_stamp vom Typ DATE ist.

Ich soll eine beliebige Anzahl von Tagen in der obigen Abfrage mit Bind-Variablen zur Eingabe der Lage sein.

versuchte Also ich folgende und scheint nicht zu arbeiten:

select * from table1 where time_stamp > sysdate - INTERVAL :days day;

Ich habe versucht Eingabe der numerischen Eingabe sowohl als 10 und ‚10‘, für zB. Sie erhalten ORA-00933 Fehler auf 10 g.

War es hilfreich?

Lösung

Die Zeichenfolge INTERVAL '1' day in Ihrer ursprünglichen Abfrage ist ein Intervall wörtliche, das heißt es vom Parser auf einen einzelnen Wert ausgewertet wird. Sie können nicht einen Teil davon mit einer Bindevariable ersetzen.

Wenn Sie stattdessen NUMTODSINTERVAL( 1, 'DAY' ) verwenden, dann 1 eine ganze Zahl wörtliche, die Sie sollten mit einer gebundenen Variable ersetzen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top