这是一个没有绑定变量的简单工作查询:
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 错误。
答案 0 :(得分:9)
原始查询中的字符串INTERVAL '1' day
是区间文字,即解析器将其评估为单个值。你不能用绑定变量替换它的一部分。
如果您改为使用NUMTODSINTERVAL( 1, 'DAY' )
,那么1是一个整数文字,您应该能够用绑定变量替换它。