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