sql >> Base de Datos >  >> RDS >> Oracle

Cómo ingresar enlaces para un parámetro de varios valores en SQL Developer

Esta no es una restricción de SQL Developer, es solo cómo funcionan las variables de vinculación. Estás haciendo efectivamente:

select count(*) from foo 
where foo.id in ('1,2,3')

... que es realmente in (to_number('1,2,3')) , de ahí el error. Funcionará para un solo valor, dará resultados extraños para dos valores si su separador decimal es una coma y fallará para cualquier otra cosa.

No puede ingresar múltiples valores en un mensaje de enlace, o proporcionar múltiples valores a un in() con un solo enlace. Puedes hacer trampa sea ​​un poco inventivo sin embargo. La xmltable La función convertirá la cadena separada por comas en filas con un valor en cada una:

var ids varchar2(50);
exec :ids := '1,2,3';
select * from xmltable(:ids);

COLUMN_VALUE
------------
1            
2            
3            

Luego puede usar eso como una tabla de búsqueda:

select count(*)
from xmltable(:ids) x
join foo f on f.id = to_number(x.column_value);

  COUNT(*)
----------
         3