sql >> Databasteknik >  >> RDS >> Oracle

Hur man skickar indataparameter i lagrad proceduranrop från en enda kommandorad

Med det du har visat måste du antingen undkomma parentesen:

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

Eller omge ditt kommando inom dubbla citattecken:

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

Båda kommer att stoppa skalet från att försöka tolka parathensen själv, vilket skulle ge dig ett 'syntax error: '(' unexpected eller liknande fel. Det har egentligen ingenting med Oracle att göra, det är bara hur skaltolken fungerar, innan den når så långt som att leda den ekade strängen till SQL*Plus.

För övrigt skulle jag i allmänhet använda en heredoc för den här typen av saker och undvika att lägga in autentiseringsuppgifterna på kommandoraden så att de inte är synliga via ps; till exempel:

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



  1. Ställa in Big Query-variabler som mysql

  2. Hur utför man en SQLite-fråga i en Android-applikation?

  3. Spring Data JPA anropar Oracle Function

  4. Hur man skapar ett serverlöst GraphQL API för MySQL, Postgres och Aurora