No estoy seguro a que te refieres con
crear un bloque de datos desde un procedimiento, si es devolver un conjunto de resultados desde un procedimiento, lo puedes hacer definiendo una variable de tipo sys_refcursor como parámetro de salida.
Código:
create or replace procedure p1(c out sys_refcursor)
is
begin
open c for select * from dual;
end;
Saludos