Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Kommagetrennter Parameter in gespeicherter plsql-Prozedur

Ich fürchte, so funktioniert es nicht:

SELECT * from myTable where name in (inputStr);

Sie können dynamisches SQL verwenden, wie in der Antwort von @Bob Jarvis, oder Sie können Folgendes tun:

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

Die Schwierigkeit bei letzterem besteht darin, dass ein regulärer Ausdruck in Oracle höchstens 512 Byte lang sein darf. Also Ihr inputStr wäre auf 508 Bytes begrenzt (da wir vier Bytes für die Anker und die Gruppierung hinzufügen).