Les noms de table et de colonne ne peuvent pas être passés en tant que variables de liaison, non. L'intérêt des variables de liaison est qu'Oracle peut générer un plan de requête une fois pour l'instruction, puis l'exécuter plusieurs fois avec différentes valeurs de variable de liaison. Si l'optimiseur ne sait pas quelle table est consultée ou quelles colonnes sont sélectionnées et filtrées, il ne peut pas générer de plan de requête.
Si votre souci concerne les attaques par injection SQL, et en supposant que le SQL dynamique est réellement nécessaire (la plupart du temps, la nécessité de recourir au SQL dynamique implique des problèmes avec le modèle de données), vous pouvez utiliser le DBMS_ASSERT
package pour valider que les noms de table et les noms de colonne ne contiennent pas Embedded SQL.