Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oráculo. Selecione tudo se o parâmetro for nulo, caso contrário, retorne um problema de item específico


Basta usar coalesce . É a maneira mais legível e compreensível de escrever isso. Como a lógica está contida em um predicado, é mais fácil manter e remover:
select * from job where id = coalesce(:i, id)

Conforme solicitado, uma 'prova' isso realmente usa o índice:
create table x ( id number(15) null );

create unique index x_pk on x( id );

select id
from   x
where  id = coalesce(:x, id)
; -- Uses index

select id
from   x
where  id = :x or :x is null
; -- Full table scan

Plano: