Zakładając, że twój kod SQL nie jest dłuższy niż 32 KB (jak zasugerował @Tony Andrews), powinieneś być w stanie użyć czegoś takiego:
declare
SQL_Text varchar2(32760) := 'select * from dual'; --your query goes here
cur sys_refcursor;
begin
open cur for SQL_Text;
end;
Podczas pracy z kursorami referencji open-for
może być użyty bezpośrednio, zamiast execute immediate
.