Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Umieść wybierz wynik w zmiennej ksh

Jako podstawowy zarys możesz uruchomić SQL*Plus z dokumentem heredoc, aby wykonać zapytanie i przypisać wynik do zmiennej:

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`

Zamknięcie w backticks przypisuje wynik do zmiennej. $P_NUMBER będzie wtedy przechowywać dowolną wartość, jaką uzyskało Twoje zapytanie (lub komunikat o błędzie, jeśli dane uwierzytelniające były nieprawidłowe, powiedzmy). Pomaga, jeśli masz pewność, że zapytanie zwróci dokładnie jeden wynik. Możesz również przetestować kod powrotu za pomocą $? aby szukać błędów, zanim spróbujesz użyć swojej zmiennej.

W tym -s flaga, wyłączenie sprzężenia zwrotnego i ustawienie rozmiaru strony na zero wspólnie tłumią cały szum, dzięki czemu otrzymujesz tylko wynik i nie musisz usuwać banerów, nagłówków itp.

I wreszcie użyłem /nolog i umieść connect oświadczenie wewnątrz dokumentu heredoc, aby poświadczenia nie pojawiały się na liście procesów, co jest często pomijanym problemem bezpieczeństwa. Jeśli nie chcesz tego robić i wpisz poświadczenia jako sqlplus username/passwd , możesz dodać -l flaga, aby logować się tylko raz; w przeciwnym razie, jeśli z jakiegoś powodu logowanie się nie powiedzie, spróbuje użyć reszty dokumentu heredoc jako dalszych danych uwierzytelniających i może wydawać się, że zawiesza się za pomocą krótkich skryptów.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapętlanie wartości, tworzenie dynamicznych zapytań i dodawanie do zbioru wyników

  2. Sekcja inicjowania pakietu

  3. Jak zmienić tabelę dodać wyrocznię kolumny

  4. Czy Oracle zezwala na opcję niezatwierdzonego odczytu?

  5. Co dzieje się z wyzwalaczami zależnymi po usunięciu tabeli?