Met wat je hebt laten zien, moet je ofwel de haakjes ontwijken:
echo execute some_procedure\(123,234\) | sqlplus username/[email protected]
Of zet uw commando tussen dubbele aanhalingstekens:
echo "execute some_procedure(123,234)" | sqlplus username/[email protected]
Ofwel stopt de shell met het proberen de parathenzen zelf te interpreteren, wat u een 'syntax error: '(' unexpected
zou geven of soortgelijke fout. Het heeft eigenlijk niets met Oracle te maken, het is gewoon hoe de shell-interpreter werkt, voordat het zover komt dat de echo-string naar SQL*Plus wordt doorgestuurd.
Overigens zou ik over het algemeen een heredoc voor dit soort dingen gebruiken en vermijden om de inloggegevens op de opdrachtregel te plaatsen, zodat ze niet zichtbaar zijn via ps
; bijvoorbeeld:
sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF