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.