2

以下は、バインド変数を使用しない単純な作業クエリです。

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

time_stampタイプDATEです。

バインド変数を使用して、上記のクエリに任意の日数を入力できるはずです。

だから私は次のことを試しましたが、うまくいかないようです:

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

たとえば、数値入力を10と「10」の両方で入力してみました。10g でORA-00933エラーが発生します。

4

1 に答える 1

10

元のクエリの文字列INTERVAL '1' dayは間隔リテラルです。つまり、パーサーによって単一の値に評価されます。その一部をバインド変数に置き換えることはできません。

代わりに を使用する場合NUMTODSINTERVAL( 1, 'DAY' )、 1 は​​整数リテラルであり、バインド変数に置き換えることができます。

于 2010-05-13T19:05:09.277 に答える