alguém sabe qual o limite maximo de uma query utilizada de forma dinamica no query_data_source_name do set_block_property? Penso que mais de 1000 caracteres dá erro. Como contornar se o código atingir o limite maximo suportado pela string.
Declare
v_sql varchar2(2000)
begin
v_sql:='(select . . . .. from dual)'; -- Este codigo pode ter pelo menos 800 caracteres que funciona!!!
set_block_property('block_xpto', query_data_source_name, v_sql);
execute_query;
end;
Talvez você tenha que criar uma view e usar ali.
Entendo que muitas vezes a gente usa o Query Data Source Name justamente porque não se pode usar views.
Além da dica que o Dr_Gori bem colocou, você poderia, caso estoure o limite, partir para um PL/SQL, populando uma temporária e, ler a temporária (já resolvida) no teu bloco.