Olá Eder,
É possível executar SQL dinâmico nessa forma, concatenando o nome da tabela no SQL, mas é fortemente recomendado que seja a
última alternativa de solução. SQL dinâmico é geralmente útil em casos onde sem ele você precisaria escrever muito mais código e ficaria uma solução muito mais complexa com SQL estático.
Seguem alguns pontos relevantes na minha opinião:
- SQL dinâmico e concatenação de strings em SQL tornam o código vulnerável a SQL injection, que é uma falha grave de segurança em aplicações de banco de dados. Esteja consciente disso e valide
sempre os strings recebidos para concatenar. Leia sobre a package DBMS_ASSERT.
http://download.oracle.com/docs/cd/E118 ... assert.htm
- SQL estático tem a sintaxe validada em tempo de compilação. SQL Dinâmico não.
- SQL estático é validado em tempo de compilação para garantir que o usuário tenha os grants necessários para realizar a operação. Dinâmico não.
- Como consequência seu código muito mais complicado de manter e aparelhar para fazer debug; e muito mais sujeito a erros.
- SQL estático em PL/SQL utiliza binding de variáveis (parâmetros no where) automaticamente. No SQL dinâmico você precisa fazer manualmente ou então está sujeito a fazer parse do SQL repetidamente, acabando com a performance do BD.
Tenho certeza que há mais pontos que poderiam ser reforçados mas isso é o que eu consegui lembrar agora.
Tem mais informações sobre SQL dinâmico no link abaixo:
http://download.oracle.com/docs/cd/E118 ... ynamic.htm