sql >> Database >  >> RDS >> Oracle

Zet het select-resultaat in een ksh-variabele

Als basisschema kunt u SQL*Plus uitvoeren met een heredoc om de query uit te voeren en de uitvoer toewijzen aan een variabele:

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`

Omsluiten in backticks wijst het resultaat toe aan de variabele. $P_NUMBER zal dan de waarde bevatten die uw zoekopdracht heeft gekregen (of een foutmelding als de inloggegevens verkeerd waren, bijvoorbeeld). Het helpt als u zeker weet dat de zoekopdracht precies één resultaat oplevert. Je kunt de retourcode ook testen met $? om fouten te zoeken, voordat u uw variabele probeert te gebruiken.

Inclusief de -s markeren, feedback uitschakelen en de paginagrootte op nul zetten, onderdrukken gezamenlijk alle ruis, zodat u alleen het resultaat krijgt en banners, koppen enz. niet hoeft te verwijderen.

En tot slot heb ik /nolog . gebruikt en zet de connect statement in de heredoc zodat de referenties niet in de proceslijst verschijnen, wat een vaak over het hoofd gezien beveiligingsprobleem is. Als u dat niet wilt doen en de inloggegevens invoert als sqlplus username/passwd , kunt u de -l . toevoegen vlag zodat het maar één keer probeert in te loggen; anders, als het inloggen om de een of andere reden mislukt, zal het proberen de rest van de heredoc als verdere inloggegevens te gebruiken en kan het lijken alsof het vastloopt met korte scripts.




  1. php-query loopt niet?

  2. Foutmelding Plugin 'InnoDB'-registratie als STORAGE ENGINE mislukt bij het starten van MySQL

  3. installeer en configureer OCI8 om oracle te verbinden met php

  4. converteer unix_timestamp naar tijdstempel in orakel