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

parâmetro separado por vírgula no procedimento armazenado plsql


Receio que não funcione assim:
SELECT * from myTable where name in (inputStr);

Você pode usar SQL dinâmico, como na resposta de @Bob Jarvis, ou pode fazer o seguinte:
SELECT * FROM myTable WHERE REGEXP_LIKE(name, '^(' || REPLACE(inputStr, ',', '|') || ')$');

A dificuldade com o último é que, no Oracle, uma expressão regular pode ter no máximo 512 bytes. Portanto, seu inputStr seria limitado a 508 bytes (já que estamos adicionando quatro bytes para as âncoras e o agrupamento).