Jako základní osnovu můžete spustit SQL*Plus s heredoc k provedení dotazu a přiřadit výstup proměnné:
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`
Uzavření do zpětných znamének přiřadí výsledek proměnné. $P_NUMBER pak bude obsahovat jakoukoli hodnotu, kterou váš dotaz získal (nebo chybovou zprávu, pokud byly přihlašovací údaje, řekněme). Pomáhá, pokud jste si jisti, že dotaz vrátí přesně jeden výsledek. Můžete také otestovat návratový kód pomocí $?
hledat chyby, než se pokusíte použít svou proměnnou.
Včetně -s
příznak, vypnutí zpětné vazby a nastavení velikosti stránky na nulu společně potlačí veškerý šum, takže získáte pouze výsledek a nemusíte odstraňovat bannery, nadpisy atd.
A nakonec jsem použil /nolog
a vložte connect
prohlášení uvnitř heredoc, aby se přihlašovací údaje nezobrazovaly v seznamu procesů, což je často přehlížený bezpečnostní problém. Pokud to nechcete a uděláte to, vložte přihlašovací údaje jako sqlplus username/passwd
, můžete přidat -l
příznak, aby se pokusil přihlásit pouze jednou; v opačném případě, pokud se přihlášení z nějakého důvodu nezdaří, pokusí se použít zbytek heredocu jako další pověření a může se zdát, že zasekne krátké skripty.