FEHLER: Die Zuweisungsquelle hat zwei Spalten zurückgegeben Migration von XML-Elementen

Es liegt ein FEHLER vor: Die Zuweisungsquelle hat zwei Spalten zurückgegeben
Schwierigkeiten bei der Migration des XML-Elements nach Postgresql



oracle code:

  v_select_query := 'select XMLAGG (XMLELEMENT
  (e, acct_group, '','').EXTRACT (''//text()'')).getclobval ()
            from (select distinct trim(iag7) acct_group
                from investc,gl_skat,client_entity
                where iag7 = trim(skat_group(+))
                  and ci2 = ic_client_id_702(+)
                  and in7 in 
(select in7 from investc
	  start with in7 in (select connection_ic_no_694
	  from pic
	  where connection_pers_code_694 = '''|| v_user_code ||''')
	  connect by prior in7 = ion7)';
	  
	  
	  

Postgresql code:

  v_select_query := '
WITH RECURSIVE recursive_cte AS (
  SELECT in7, ion7
  FROM investc
  WHERE in7 IN (
    SELECT connection_ic_no_694
    FROM pic
    WHERE connection_pers_code_694 = '|| v_user_code ||'
  )
  
  UNION
  
  SELECT ic.investment_code_no, ic.ion7
  FROM investc ic
  JOIN recursive_cte rc ON ic.in7 = rc.ion7
)
SELECT string_agg(acct_group, '') AS xml_result
FROM (
  SELECT DISTINCT TRIM(ic.ic_acct_group_702) AS acct_group
  FROM investc ic
  LEFT JOIN gl_skat gs ON ic.ic_acct_group_702 = TRIM(gs.skat_group)
  LEFT JOIN client_entity ce ON ce.ci2 = ic.ic_client_id_702
  WHERE ic.in7 IN (
    SELECT in7
    FROM recursive_cte
  )
)' AS subquery;`Vorformatierter Text`

Was genau soll denn das Statement machen? In den meisten Fällen wird dieses XMLAGG “Monster” in Oracle verwendet um eine Liste von Komma separierten Werten zu extrahieren. Dafür braucht man kein recursives Statement in Postgres. Das geht mit viel weniger Aufwand mit string_to_table() (oder in älteren Postgres Versionen mit unnest() und string_to_array()

Kannst Du uns anhand von Beispieldaten zeigen, was das Statement machen soll?

1 „Gefällt mir“

Recursive im using to migrate start with & connect by.

Sorry i don’t have data oracle db access.

If possible pls rewrite it. I use chat gpt but no use

Ohne zu wissen, was die Abfrage macht, ist es unmöglich das umzuschreiben. Dazu muss man keinen Zugriff auf eine Oracle Datenbank haben. Beispieldaten der Tabellen zusammen mit dem erwarteten Ergebnis sind dafür notwendig.

1 „Gefällt mir“