Vi kan använda TABLE
funktion på en samling för att få en lista med siffror/tecken.
SELECT *
FROM TABLE ( sys.odcinumberlist(8779254,8819930,8819931) );
8779254
8819930
8819931
Här använder jag Oracles interna VARRAY
med en gräns på 32767. Du kan använda din egen NESTED TABLE
typ.
create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;
och välj det sedan.
SELECT *
FROM TABLE ( yourtype(8779254,8819930,8819931) );
Så din fråga kan helt enkelt skrivas som
SELECT x_name
FROM table_x
WHERE x_id IN ( SELECT * FROM
TABLE ( yourtype(8779254,8819930,8819931) ) );
12.2 och högre behöver du inte ens ange TABLE
.
SELECT * FROM yourtype(8779254,8819930,8819931)
fungerar.