FEHLER: Mehr als eine Zeile wurde von einer Unterabfrage zurückgegeben, die als Ausdruck mit unnest (string_to_array) verwendet wurde

 
 oracle code:
 
 INSERT INTO WCT.AUDITDA
  (ID_01, ID_02, ID_01_OLD, ID_01_NEW)
  (select csid, cpp, ovl, nwl from
  (select csid CustId from dual) full join
  (select TRIM(regexp_substr(cp, '[^,]+', 1, LEVEL)) cpp,
  to_nchar(TRIM(regexp_substr(ov, '[^,]+', 1, LEVEL))) ovl,
  to_nchar(TRIM(regexp_substr(nv, '[^,]+', 1, LEVEL))) nwl
FROM dual CONNECT BY LEVEL <=  cnt) on 1=1  );


Postgresql code:

INSERT INTO WCT.AUDITDA
(ID_01, ID_02, ID_01_OLD, ID_01_NEW)
  (select csid, cpp, ovl, nwl from
  (select csid CustId) A1 full join 
  (SELECT unnest(string_to_array((cp)::TEXT, ',')) as cpp,
(SELECT unnest(string_to_array((ov)::TEXT, ','))) as ovl,
(SELECT unnest(string_to_array((nw)::TEXT, ','))) as nwl)a1 ON 1=1);

Error:

ERROR:  more than one row returned by a subquery used as an expression

Wo kommen denn die Spalten csid, cp, ov und nv her? Ich sehe da keine Tabellen im FROM

Du musst ein FROM mit dem Ergebnis des unnest() machen. Unter der Annahme, dass csid, cp, ov und nw Parameter einer Funktion oder Prozedur sind, sowas vielleicht:

INSERT INTO WCT.AUDITDA (ID_01, ID_02, ID_01_OLD, ID_01_NEW)
select csid, cpp, ovl, nwl 
from unnest(string_to_array(cp, ','),
            string_to_array(ov, ','),
            string_to_array(nw, ',')) as t(cpp,ovl,nwl)
1 „Gefällt mir“

Lieb,

Es tut mir Leid. Ja, ich habe diese zusätzlichen Parameter entfernt und funktioniert. Danke für die Hilfe.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.