SELECT da tabela com a lista Varying IN na cláusula WHERE

Estou enfrentando um problema no projeto em que estou trabalhando, não posso fornecer o código real, mas criei um código de exemplo executável como abaixo

Aquitemp etemp_id são duas mesas

temp A tabela contém uma lista de IDs separados por vírgula, que éVARCHAR2temp_id tabela contém os IDs reais que sãoNUMBER

Quero pesquisar linhas detemp_id tabela obtendoids da lista separada por vírgula de IDs detemp mesa

//DDLs to create table
CREATE TABLE temp(ids VARCHAR2(4000));
CREATE TABLE temp_id(data_id NUMBER);

//DMLs to populate test data
INSERT INTO temp VALUES('1, 2, 3');

INSERT INTO temp_id VALUES(1);
INSERT INTO temp_id VALUES(2);
INSERT INTO temp_id VALUES(3);
INSERT INTO temp_id VALUES(4);
INSERT INTO temp_id VALUES(5);

Esta consulta não funciona

SELECT * FROM temp_id WHERE data_id IN (SELECT to_number(COLUMN_VALUE) FROM XMLTABLE(SELECT ids FROM temp));

Consulta de trabalho

SELECT * FROM temp_id WHERE data_id IN (SELECT to_number(COLUMN_VALUE) FROM XMLTABLE('1, 2, 3'));

Aqui diferença entre as duas consultas acima é que eu estou usando a coluna detemp tabela na primeira consulta e aspas diretasvarchar2 na segunda consulta. Não está entendendo o motivo pelo qual não está funcionando? Estou faltando alguma coisa? Eu acho que pode haver alguma incompatibilidade de tipo de dados, mas não é possível descobrir isso.

questionAnswers(2)

yourAnswerToTheQuestion