С това, което сте показали, или трябва да избегнете скобите:
echo execute some_procedure\(123,234\) | sqlplus username/[email protected]
Или оградете командата си в двойни кавички:
echo "execute some_procedure(123,234)" | sqlplus username/[email protected]
И двата ще спрат обвивката да се опитва да интерпретира самата parathenses, което ще ви даде 'syntax error: '(' unexpected
или подобна грешка. Това всъщност няма нищо общо с Oracle, това е просто начинът, по който работи интерпретаторът на обвивката, преди да стигне до прехвърлянето на ехото на низа към SQL*Plus.
Между другото, обикновено бих използвал heredoc за такива неща и избягвам да поставям идентификационните данни в командния ред, така че да не се виждат чрез ps
; например:
sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF