Avec ce que vous avez montré, vous devez soit échapper les parenthèses :
echo execute some_procedure\(123,234\) | sqlplus username/example@sqldat.com
Ou placez votre commande entre guillemets :
echo "execute some_procedure(123,234)" | sqlplus username/example@sqldat.com
L'un ou l'autre empêchera le shell d'essayer d'interpréter les parathenses lui-même, ce qui vous donnerait une erreur de syntaxe 'syntax error: '(' unexpected ou erreur similaire. Cela n'a vraiment rien à voir avec Oracle, c'est juste comment fonctionne l'interpréteur de shell, avant qu'il n'aille jusqu'à diriger la chaîne en écho vers SQL*Plus.
Incidemment, j'utiliserais généralement un heredoc pour ce genre de chose et éviterais de mettre les informations d'identification sur la ligne de commande afin qu'elles ne soient pas visibles via ps; par exemple :
sqlplus -s /nolog <<!EOF
connect username/example@sqldat.com
execute some_procedure(123,234)
exit
!EOF