Oracle SQL: используя переменную связывания для дат
Вопрос
Вот простой рабочий запрос без переменных связей:
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», например,. Ты получаешь ORA-00933. Ошибка на 10 г.
Решение
Строка INTERVAL '1' day
В вашем первоначальном запросе находится интервальная буквальная буквальная, то есть его оценивается анализатором к одному значению. Вы не можете заменить часть ее с переменной связью.
Если вы вместо этого используете NUMTODSINTERVAL( 1, 'DAY' )
, Затем 1 является целочисленным буквалом, который вы сможете заменить с переменной связей.
Не связан с StackOverflow