Với những gì bạn đã hiển thị, bạn cần phải thoát khỏi dấu ngoặc đơn:
echo execute some_procedure\(123,234\) | sqlplus username/example@sqldat.com
Hoặc đặt lệnh của bạn trong dấu ngoặc kép:
echo "execute some_procedure(123,234)" | sqlplus username/example@sqldat.com
Một trong hai cách sẽ ngăn trình bao cố gắng thâm nhập vào chính các thông số, điều này sẽ cung cấp cho bạn một 'syntax error: '(' unexpected hoặc lỗi tương tự. Nó thực sự không liên quan gì đến Oracle, nó chỉ là cách trình thông dịch shell hoạt động, trước khi nó đi xa đến mức chuyển chuỗi được lặp lại sang SQL * Plus.
Ngẫu nhiên, tôi thường sử dụng heredoc cho loại việc này và tránh đặt thông tin đăng nhập trên dòng lệnh để chúng không hiển thị qua ps; ví dụ:
sqlplus -s /nolog <<!EOF
connect username/example@sqldat.com
execute some_procedure(123,234)
exit
!EOF