Supponendo che il tuo SQL non sia più lungo di 32K (come suggerito da @Tony Andrews), dovresti essere in grado di usare qualcosa del genere:
declare
SQL_Text varchar2(32760) := 'select * from dual'; --your query goes here
cur sys_refcursor;
begin
open cur for SQL_Text;
end;
Quando si lavora con i cursori di riferimento, open-for
può essere utilizzato direttamente, invece di execute immediate
.