Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Orakel. Wählen Sie alle aus, wenn der Parameter null ist, andernfalls geben Sie ein bestimmtes Elementproblem zurück

Verwenden Sie einfach coalesce . Es ist die lesbarste und verständlichste Art, dies zu schreiben. Da die Logik in einem Prädikat enthalten ist, ist es einfacher zu pflegen und zu entfernen:

select * from job where id = coalesce(:i, id)

Wie gewünscht, ein 'Beweis' dafür verwendet tatsächlich den Index:

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

Plan: