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.