Con lo que ha mostrado, debe escapar de los paréntesis:
echo execute some_procedure\(123,234\) | sqlplus username/[email protected]
O escriba su comando entre comillas dobles:
echo "execute some_procedure(123,234)" | sqlplus username/[email protected]
Cualquiera de los dos impedirá que el shell intente interpretar los parántesis en sí mismo, lo que le daría un error de sintaxis de 'syntax error: '(' unexpected
o error similar. En realidad, no tiene nada que ver con Oracle, es solo cómo funciona el intérprete de shell, antes de llegar a canalizar la cadena repetida a SQL*Plus.
Por cierto, generalmente uso un heredoc para este tipo de cosas y evito poner las credenciales en la línea de comando para que no sean visibles a través de ps
; por ejemplo:
sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF