Hallo,
einen hab' ich noch, aber bitte dafür nicht hauen:
SQL-Code:
select * from (
select
'SELECT l FROM (SELECT LEVEL l FROM dual '
||'CONNECT BY LEVEL <= ('
||'SELECT spalte_b AS endIndex FROM test WHERE spalte_a = '||spalte_a
||')) WHERE l >= ('
||'SELECT spalte_a AS startIndex FROM test WHERE spalte_a = '||spalte_a ||')'||chr(10)
||'union all' as Spalte
from test
order by spalte_a
)
union all
select 'select 0 from dual' from dual
Man nehme das
SQL, führe es aus, nehme das Ergebnis und führe es aus.
Nagut, was passiert hier:
Es wird mit
SQL ein
SQL-Statement generiert, das für jede Zeile der Tabelle eine Select ... Level ... generiert, die per union all miteinander verbunden werden. Dadurch ist am Ende ein union all zuviel, das mit einem select 0 from dual "neutralisiert" wird.