Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi est-ce que j'obtiens Ora-30004 lorsque le délimiteur sys_connect_by_path n'est pas présent dans les valeurs de colonne

Cela sent comme un insecte. Si vous avez besoin de contourner ce problème et d'implémenter votre logique, vous pouvez également utiliser la factorisation de sous-requête récursive (récursive avec), qui fonctionne bien dans 11.2.0.4 :

SQL> with t (id, label, parentid, reportlevel, fake_connect_by_path) as (
  2  select id, label, parentid, 0 as reportlevel, ' -> ' || label as fake_connect_by_path
  3    from temptable
  4   where parentid is null
  5   union all
  6  select tt.id, tt.label, tt.parentid, reportlevel + 1, t.fake_connect_by_path || ' -> ' || tt.label as fake_connect_by_path
  7    from temptable tt
  8    join t on t.id = tt.parentid
  9  )
 10  select fake_connect_by_path
 11    from t;
FAKE_CONNECT_BY_PATH
--------------------------------------------------------------------------------
 -> ninechars
 -> Im stumped
 -> - Unknown -
 -> ninechars -> erewrettt