sql >> Databáze >  >> RDS >> Oracle

čárkami oddělený parametr v uložené proceduře plsql

Obávám se, že takto to nefunguje:

SELECT * from myTable where name in (inputStr);

Můžete použít dynamické SQL, jako v odpovědi @Bob Jarvis, nebo můžete provést následující:

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

Potíž s tím druhým je, že v Oracle může být regulární výraz dlouhý maximálně 512 bajtů. Takže váš inputStr by bylo omezeno na 508 bajtů (protože přidáváme čtyři bajty pro kotvy a seskupení).



  1. Uzel MySQL Galera se nespouští (přerušení s chybou 'WSREP:[...]:60:nepodařilo se dosáhnout primárního zobrazení:60 (vypršel časový limit operace)')

  2. Předání názvu tabulky kurzoru

  3. Oracle SQL – spojuje syntaxi/klíčová slova

  4. 2 způsoby, jak přidat úvodní nuly v PostgreSQL