Os nomes de tabela e coluna não podem ser passados como variáveis de ligação, não. O ponto principal das variáveis de ligação é que o Oracle pode gerar um plano de consulta uma vez para a instrução e executá-lo várias vezes com diferentes valores de variáveis de ligação. Se o otimizador não souber qual tabela está sendo acessada ou quais colunas estão sendo selecionadas e filtradas, ele não poderá gerar um plano de consulta.
Se sua preocupação é com ataques de injeção de SQL, e assumindo que SQL dinâmico é realmente necessário (na maioria das vezes, a necessidade de recorrer a SQL dinâmico implica em problemas com o modelo de dados), você pode usar o
DBMS_ASSERT
pacote para validar que os nomes de tabela e de coluna não contêm SQL incorporado.