Oracle SQL: el uso variable de vinculación para fechas
Pregunta
Esta es una consulta de trabajo sencillo y sin variables de enlace:
select * from table1 where time_stamp > sysdate - INTERVAL '1' day;
donde time_stamp
es de tipo DATE
.
I debería ser capaz de introducir cualquier número de días en la consulta anterior utilizando variable de enlace.
Así que trató lo siguiente y no parece que el trabajo:
select * from table1 where time_stamp > sysdate - INTERVAL :days day;
I intentado entrar en la entrada numérica tanto como 10 y '10', por ejemplo. Se obtiene ORA-00933 error en 10g.
Solución
El INTERVAL '1' day
cadena en su búsqueda original es un literal intervalo, es decir, se evalúa por el analizador a un solo valor. No se puede sustituir parte de ella con una variable de vinculación.
Si en lugar de utilizar NUMTODSINTERVAL( 1, 'DAY' )
, entonces 1 es un literal entero que usted debe ser capaz de reemplazar con una variable de vinculación.