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

Jak przekazać parametr wejściowy w wywołaniu procedury składowanej z pojedynczego wiersza poleceń?

Mając to, co pokazałeś, musisz albo uciec od nawiasów:

echo execute some_procedure\(123,234\) | sqlplus username/[email protected]

Lub umieść swoje polecenie w podwójnych cudzysłowach:

echo "execute some_procedure(123,234)" | sqlplus username/[email protected]

Albo zatrzyma powłokę próbującą zinterpretować same nawiasy, co dałoby ci 'syntax error: '(' unexpected lub podobny błąd. Tak naprawdę nie ma to nic wspólnego z Oracle, chodzi po prostu o to, jak działa interpreter powłoki, zanim dotrze on do przesyłania łańcucha z echem do SQL*Plus.

Nawiasem mówiąc, generalnie używałbym heredoc do tego rodzaju rzeczy i unikałbym umieszczania poświadczeń w wierszu poleceń, aby nie były widoczne przez ps; na przykład:

sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę połączyć ORACLE z programu EXCEL z JDBC?

  2. Generowanie oddzielnych wierszy dla każdego miesiąca w zakresie dat

  3. Wyzwalacz PL/SQL dla po wstawieniu, aktualizacji, usunięciu, który wprowadza dane do tabeli dziennika z sekwencją

  4. Entity Framework i Oracle:nie można wstawić VARCHAR2> 1,999 znaków

  5. Jak zamienić lookahead w regex?