sql >> Database >  >> RDS >> Oracle

Waarom krijg ik Ora-30004 als het scheidingsteken sys_connect_by_path niet aanwezig is in kolomwaarden?

Dit ruikt naar een bug. Als je het moet omzeilen en je logica moet implementeren, kun je ook recursieve subquery-factoring (recursief With) gebruiken, wat goed werkt in 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



  1. Selecteer meerdere kolommen uit een tabel en voeg gegevens in een andere tabel in een andere database in PHP-MySQL in

  2. Stapeldieptelimiet overschreden in PostgresQL (na verwijderingstrigger)

  3. MySQL-syntaxisfout bij gebruik van de opdracht LIMIT met voorbereide instructie in Java

  4. Verborgen functies in Oracle