Dengan apa yang telah Anda tunjukkan, Anda juga harus keluar dari tanda kurung:
echo execute some_procedure\(123,234\) | sqlplus username/[email protected]
Atau lampirkan perintah Anda dalam tanda kutip ganda:
echo "execute some_procedure(123,234)" | sqlplus username/[email protected]
Entah akan menghentikan Shell yang mencoba menafsirkan parathens itu sendiri, yang akan memberi Anda 'syntax error: '(' unexpected
atau kesalahan serupa. Sebenarnya ini tidak ada hubungannya dengan Oracle, ini hanya cara kerja penerjemah shell, sebelum sampai pada pemipaan string yang digaungkan ke SQL*Plus.
Kebetulan, saya biasanya menggunakan heredoc untuk hal semacam ini, dan menghindari meletakkan kredensial pada baris perintah sehingga tidak terlihat melalui ps
; misalnya:
sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF