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