El problema es que Oracle (por defecto) trata las cadenas vacías como NULL
. Por lo tanto:
where name = ''
es lo mismo que:
where name = NULL
y ambos siempre fallan (porque devuelven NULL
).
Puedes arreglar esto de varias maneras. Un método es:
where (name = INPUT or name is null and INPUT is null)
O, si sabe que hay un nombre no válido:
where coalesce(name, '<invalid>') = coalesce(INPUT, '<invalid>')