Você pode criar um procedimento armazenado para fazer isso em PL/SQL criando dinamicamente sua instrução SQL como uma string e, em seguida, usando
execute immediate
para executá-lo e retornar um cursor. execute immediate
para executá-lo e retornar um cursor.