Você não pode criar um
%ROWTYPE
variável para uma tabela desconhecida e você não pode se referir estaticamente aos nomes das colunas quando não sabe o nome da tabela em tempo de compilação. Você pode usar o pacote dbms_sql para lidar com instruções SQL completamente dinâmicas. Você precisará preparar a instrução SQL, descrever as colunas para descobrir o número de colunas e seus tipos de dados, vincular variáveis apropriadas e buscar os dados. É uma maneira muito mais complicada de escrever código do que o exemplo que você postou, mas oferece extrema flexibilidade.
Há vários exemplos de uso do pacote dbms_sql na documentação que vinculei. Você também pode verificar a função dump_csv de Tom Kyte que grava o resultado de uma consulta arbitrária em um arquivo CSV usando
UTL_FILE
. Se você realmente deseja gravar os dados em DBMS_OUTPUT
, você pode simplesmente substituir o UTL_FILE
chamadas com DBMS_OUTPUT
. Mas tenho certeza de que você deseja fazer algo mais útil do que apenas gravar os dados no DBMS_OUTPUT
buffer para que o procedimento de Tom esteja provavelmente mais próximo do que você realmente está tentando realizar.