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

Sådan sender du inputparameter i lagret procedurekald fra en enkelt kommandolinje

Med det, du har vist, skal du enten undslippe parenteserne:

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

Eller indsæt din kommando i dobbelte anførselstegn:

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

Begge vil stoppe skallen i at forsøge at fortolke parathensene selv, hvilket ville give dig en 'syntax error: '(' unexpected eller lignende fejl. Det har egentlig ikke noget med Oracle at gøre, det er bare sådan, shell-fortolkeren fungerer, før den når så langt som at overføre den ekkoede streng til SQL*Plus.

I øvrigt ville jeg generelt bruge en heredoc til denne slags ting og undgå at placere legitimationsoplysningerne på kommandolinjen, så de ikke er synlige via ps; for eksempel:

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



  1. Hvordan kan jeg importere data til mysql-databasen via mysql workbench?

  2. offset/limit performance optimering

  3. Installation af MySQLdb på Mac OS X

  4. Sådan går du gennem session array i php