Oracle
 sql >> Database >  >> RDS >> Oracle

parametro separato da virgole nella procedura memorizzata plsql

Temo che non funzioni in questo modo:

SELECT * from myTable where name in (inputStr);

Puoi usare SQL dinamico, come nella risposta di @Bob Jarvis, oppure puoi fare quanto segue:

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

La difficoltà con quest'ultimo è che, in Oracle, un'espressione regolare può essere lunga al massimo 512 byte. Quindi il tuo inputStr sarebbe limitato a 508 byte (dal momento che stiamo aggiungendo quattro byte per le ancore e il raggruppamento).