sql >> Base de Datos >  >> RDS >> Oracle

Cómo pasar el parámetro de entrada en el procedimiento almacenado llamando desde una sola línea de comando

Con lo que ha mostrado, debe escapar de los paréntesis:

echo execute some_procedure\(123,234\) | sqlplus username/[email protected]

O escriba su comando entre comillas dobles:

echo "execute some_procedure(123,234)" | sqlplus username/[email protected]

Cualquiera de los dos impedirá que el shell intente interpretar los parántesis en sí mismo, lo que le daría un error de sintaxis de 'syntax error: '(' unexpected o error similar. En realidad, no tiene nada que ver con Oracle, es solo cómo funciona el intérprete de shell, antes de llegar a canalizar la cadena repetida a SQL*Plus.

Por cierto, generalmente uso un heredoc para este tipo de cosas y evito poner las credenciales en la línea de comando para que no sean visibles a través de ps; por ejemplo:

sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF