Oracle
 sql >> Base de données >  >> RDS >> Oracle

paramètre séparé par des virgules dans la procédure stockée plsql

J'ai bien peur que cela ne fonctionne pas de cette façon :

SELECT * from myTable where name in (inputStr);

Vous pouvez utiliser SQL dynamique, comme dans la réponse de @Bob Jarvis, ou vous pouvez procéder comme suit :

SELECT * FROM myTable WHERE REGEXP_LIKE(name, '^(' || REPLACE(inputStr, ',', '|') || ')$');

La difficulté avec ce dernier est que, dans Oracle, une expression régulière peut avoir au plus 512 octets de long. Donc, votre inputStr serait limité à 508 octets (puisque nous ajoutons quatre octets pour les ancres et le regroupement).