SQL Oracle:usando variável de ligação para datas
Pergunta
Aqui está uma consulta simples de trabalho sem variáveis de ligação:
select * from table1 where time_stamp > sysdate - INTERVAL '1' day;
onde time_stamp
é do tipo DATE
.
Devo ser capaz de inserir qualquer número de dias na consulta acima usando a variável bind.
Então tentei o seguinte e não parece funcionar:
select * from table1 where time_stamp > sysdate - INTERVAL :days day;
Tentei inserir a entrada numérica como 10 e '10', por exemplo.Você consegue ORA-00933 erro em 10g.
Solução
A corda INTERVAL '1' day
na sua consulta original há um intervalo literal, ou seja,ele é avaliado pelo analisador como um único valor.Você não pode substituir parte dela por uma variável de ligação.
Se você usar NUMTODSINTERVAL( 1, 'DAY' )
, então 1 é um literal inteiro que você deve poder substituir por uma variável de ligação.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow