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

Parametrizando o nome da tabela no arquivo de entrada sqlplus


O problema é que o SQL*Plus está tratando a string inteira após o & , até o próximo espaço em branco ou simlar, como o nome da variável de substituição. Claramente não é isso que você quer aqui.

Felizmente eles pensaram nisso, e você pode denotar o final do nome da variável com um . :
FROM &3._TABLE

(Pelo menos, isso funciona para variáveis ​​nomeadas, e tenho quase certeza de que funcionará para as posicionais ... se não, você precisará definir uma nova variável definida como &3 como solução).

Está na na documentação , mas pisque e você perderá:

Há um efeito relacionado que você pode querer ter em mente para o futuro. Se o próximo caractere após a variável de substituição for um . de qualquer forma - entre o esquema e a tabela, ou entre a tabela e a coluna, por exemplo - então isso será interpretado como o terminador de substituição. Digamos que você estivesse passando o esquema separadamente como &4 , com valor 'scott'; isto:
FROM &4.&3._TABLE

parece razoável, mas seria substituído por scottdev_TABLE , que não será reconhecido. Então, nesse caso, você precisa ter um extra:
FROM &4..&3._TABLE

que seria substituído por scott.dev_TABLE .