SELECT aus Tabelle mit variierender IN-Liste in WHERE-Klausel

Ich habe ein Problem mit dem Projekt, an dem ich arbeite. Ich kann Ihnen keinen aktuellen Code geben, aber ich habe einen ausführbaren Beispielcode wie folgt erstellt.

Hiertemp undtemp_id sind zwei Tische

temp Tabelle enthält eine durch Kommas getrennte Liste von IDs, die @ isVARCHAR2temp_id Tabelle enthält aktuelle IDs, die @ iNUMBER

Ich möchte Zeilen von @ suchtemp_id table von gettingids von durch Komma getrennte Liste von IDs vontemp Tabell

//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);

Diese Abfrage funktioniert nicht

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

Arbeitsabfrage

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

Hier Unterschied zwischen den beiden obigen Abfragen ist, dass ich die Spalte von @ verwendtemp Tabelle in der ersten Abfrage und direktes Anführungszeichenvarchar2 in der zweiten Abfrage. Sie wissen nicht, warum es nicht funktioniert? Vermisse ich etwas? Ich denke, dass es einige Datentypen gibt, die nicht übereinstimmen, aber nicht in der Lage sind, es herauszufinden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage