Supondo que seu SQL não seja maior que 32K (como @Tony Andrews sugeriu), você poderá usar algo assim:
declare
SQL_Text varchar2(32760) := 'select * from dual'; --your query goes here
cur sys_refcursor;
begin
open cur for SQL_Text;
end;
Ao trabalhar com cursores de referência,
open-for
pode ser usado diretamente, em vez de execute immediate
.