Mając to, co pokazałeś, musisz albo uciec od nawiasów:
echo execute some_procedure\(123,234\) | sqlplus username/[email protected]
Lub umieść swoje polecenie w podwójnych cudzysłowach:
echo "execute some_procedure(123,234)" | sqlplus username/[email protected]
Albo zatrzyma powłokę próbującą zinterpretować same nawiasy, co dałoby ci 'syntax error: '(' unexpected
lub podobny błąd. Tak naprawdę nie ma to nic wspólnego z Oracle, chodzi po prostu o to, jak działa interpreter powłoki, zanim dotrze on do przesyłania łańcucha z echem do SQL*Plus.
Nawiasem mówiąc, generalnie używałbym heredoc do tego rodzaju rzeczy i unikałbym umieszczania poświadczeń w wierszu poleceń, aby nie były widoczne przez ps
; na przykład:
sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF