Eu preciso escrever instruções DDL dinâmicas, como CREATE USER ?. Eu sei que posso usar EXECUTE IMMEDIATE para fazer isso, mas até agora não encontrei nenhuma maneira de incorporar parâmetros dinâmicos sem simplesmente concatenar strings, o que me deixa aberto à injeção de SQL.
Vindo do PostgreSQL, estou acostumado a poder citar identificadores ou usar FORMAT para colocar identificadores com segurança em uma string formatada que pode ser executada. Existe algo assim no Oracle (particularmente 12c)? Se não, como alguém executa esse SQL dinâmico com segurança?
DBMS_ASSERT pode ser o que você está procurando:
Essa mesma página também contém links para alguns exemplos de como você pode evitar a injeção de SQL.