Oracle SQL: используя переменную связывания для дат

StackOverflow https://stackoverflow.com/questions/2829409

  •  26-09-2019
  •  | 
  •  

Вопрос

Вот простой рабочий запрос без переменных связей:

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 является целочисленным буквалом, который вы сможете заменить с переменной связей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top