Можем да използваме TABLE
функция на колекция, за да получите списък с числа / знак.
SELECT *
FROM TABLE ( sys.odcinumberlist(8779254,8819930,8819931) );
8779254
8819930
8819931
Тук използвам вътрешния VARRAY
на Oracle с лимит от 32767. Можете да използвате своя собствена NESTED TABLE
тип.
create OR REPLACE TYPE yourtype AS TABLE OF NUMBER;
и след това го изберете.
SELECT *
FROM TABLE ( yourtype(8779254,8819930,8819931) );
Така че вашата заявка може просто да бъде написана като
SELECT x_name
FROM table_x
WHERE x_id IN ( SELECT * FROM
TABLE ( yourtype(8779254,8819930,8819931) ) );
12.2 и по-нови, дори няма да е необходимо да указвате TABLE
.
SELECT * FROM yourtype(8779254,8819930,8819931)
работи.