Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

como passar um nome de tabela como parâmetro para o procedimento armazenado?


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.