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

Come passare il parametro di input nella procedura memorizzata chiamando da riga di comando singola

Con quello che hai mostrato, devi uscire dalle parentesi:

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

Oppure racchiudi il tuo comando tra virgolette:

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

O interromperà il tentativo della shell di interpretare le paratesi stesse, il che ti darebbe un 'syntax error: '(' unexpected o errore simile. In realtà non ha nulla a che fare con Oracle, è solo il modo in cui funziona l'interprete della shell, prima che arrivi al punto di reindirizzare la stringa echeggiata su SQL*Plus.

Per inciso, generalmente userei un heredoc per questo genere di cose ed eviterei di inserire le credenziali sulla riga di comando in modo che non siano visibili tramite ps; ad esempio:

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