Вы можете достичь этого, используя выражение With и соединитель LEVEL
with str as (select 'ORACLE' as str
from dual
)
select substr(s.str, 1, length(s.str)+1 - level) as Pyramid
from str s
connect by level-(length(s.str)-1) <= (length(s.str)+1) - level
;
, также если вам нужен блок PL / SQL, то решение:
set serveroutput on
declare v_pyramid varchar2(100);
begin
with str as (select 'ORACLE' as str from dual)
select listagg(t.Pyramid, chr(13)) within group (order by t.lvl)
into v_pyramid
from ( select substr(s.str, 1, length(s.str)+1 - level) as Pyramid
, level as lvl
from str s
connect by level-(length(s.str)-1) <= (length(s.str)+1) - level
) t ;
dbms_output.put_line(v_pyramid);
end;
удачи:)