Hádám, že chcete předat tuto sadu čísel jako řetězec a rozdělit na jednotlivá čísla. To je těžší, než si myslíte, protože Oracle nepřichází s vestavěným tokenizérem. Divný, co?
V Das Interwabs existuje řada řešení PL/SQL tokenizerů. Používám variantu implementace Anup Pani, která používá Regex (proto pouze Oracle 10g nebo vyšší). Moje varianta vrací pole čísel, které jsem deklaroval jako typ SQL:
SQL> create or replace type numbers as table of number
2 /
Type created.
SQL>
To znamená, že jej mohu použít jako vstup pro funkci TABLE() v příkazu SELECT:
SQL> select * from table (str_to_number_tokens('20000, 240004, 375000, 255000'))
2 /
COLUMN_VALUE
------------
20000
240004
375000
255000
SQL>
To znamená, že mohu změnit váš řetězec čísel na tabulku, ke které se mohu připojit v dotazu, jako je tento:
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>