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

Coloque o resultado selecionado em uma variável ksh


Como um esboço básico, você pode executar o SQL*Plus com um heredoc para realizar a consulta e atribuir a saída a uma variável:
P_NUMBER=`sqlplus -s /nolog <<!EOF
connect username/password
whenever sqlerror exit failure
set pagesize 0
set feedback off
select your_value from your_table where your_key = 'something'; 
exit 0
!EOF`

Colocar acentos graves atribui o resultado à variável. $P_NUMBER manterá o valor que sua consulta obteve (ou uma mensagem de erro se as credenciais estiverem erradas, digamos). Ajuda se você tiver certeza de que a consulta retornará exatamente um resultado. Você também pode testar o código de retorno com $? para procurar erros, antes de tentar usar sua variável.

Incluindo os -s flag, desativando o feedback e definindo o tamanho da página para zero, suprima coletivamente todo o ruído para que você obtenha apenas o resultado e não precise remover banners, títulos etc.

E finalmente eu usei /nolog e coloque o connect declaração dentro do heredoc para que as credenciais não apareçam na lista de processos, que é um problema de segurança muitas vezes esquecido. Se você não quiser fazer isso e colocar as credenciais como sqlplus username/passwd , você pode adicionar o -l sinalizar para que ele tente efetuar login apenas uma vez; caso contrário, se o login falhar por algum motivo, ele tentará usar o restante do heredoc como credenciais adicionais e poderá parecer travado com scripts curtos.