sql >> Database teknologi >  >> RDS >> Oracle

Sæt det valgte resultat i en ksh-variabel

Som en grundlæggende disposition kan du køre SQL*Plus med en heredoc for at udføre forespørgslen og tildele output til en variabel:

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`

Ved at omslutte i backticks tildeles resultatet til variablen. $P_NUMBER vil derefter indeholde den værdi, din forespørgsel fik (eller en fejlmeddelelse, hvis legitimationsoplysningerne var forkerte, f.eks.). Det hjælper, hvis du er sikker på, at forespørgslen vil returnere præcis ét resultat. Du kan også teste returkoden med $? at lede efter fejl, før du prøver at bruge din variabel.

Herunder -s flag, deaktivering af feedback og indstilling af sidestørrelsen til nul undertrykker samlet al støjen, så du kun får resultatet og ikke behøver at fjerne bannere, overskrifter osv.

Og endelig har jeg brugt /nolog og sæt connect erklæring inde i heredoc, så legitimationsoplysningerne ikke vises i proceslisten, hvilket er et ofte overset sikkerhedsproblem. Hvis du ikke ønsker at gøre det og indsætter legitimationsoplysningerne som sqlplus username/passwd , kan du tilføje -l flag, så den kun forsøger at logge ind én gang; Ellers, hvis login mislykkes af en eller anden grund, vil den forsøge at bruge resten af ​​heredoc'et som yderligere legitimationsoplysninger, og det kan se ud til at blive hængt op med korte scripts.




  1. Begræns SQL Server Login-adgang til kun én database

  2. Dublerede sæt af data indsat i tabellen

  3. Påstand i MySQL

  4. Hent MySQL Server Version med PDO