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.

Foi útil?

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
scroll top