Domyślam się, że chcesz przekazać ten zestaw liczb jako ciąg i podzielić na pojedyncze liczby. Jest to trudniejsze niż mogłoby się wydawać, ponieważ Oracle nie ma wbudowanego tokenizera. Dziwne, co?
Istnieje wiele rozwiązań tokenizatorów PL/SQL, które pukają wokół Das Interwabs. Używam wariantu implementacji Anup Pani, który wykorzystuje Regex (stąd tylko Oracle 10g lub wyższy). Mój wariant zwraca tablicę liczb, które zadeklarowałem jako typ SQL:
SQL> create or replace type numbers as table of number
2 /
Type created.
SQL>
Oznacza to, że mogę go użyć jako danych wejściowych do funkcji TABLE() w instrukcji SELECT:
SQL> select * from table (str_to_number_tokens('20000, 240004, 375000, 255000'))
2 /
COLUMN_VALUE
------------
20000
240004
375000
255000
SQL>
Oznacza to, że mogę zamienić Twój ciąg liczb w tabelę, do której mogę dołączyć w zapytaniu, na przykład:
SQL> select val
2 from t23
3 , ( select column_value as i_no
4 from table (str_to_number_tokens('20000, 240004, 375000, 255000')) ) sq
5 where t23.year = 2010
6 and sq.i_no between t23.r_min and t23.r_max
7 order by t23.priority
8 /
VAL
----------
82
50
52
SQL>