Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment passer un paramètre d'entrée dans une procédure stockée appelant à partir d'une seule ligne de commande

Avec ce que vous avez montré, vous devez soit échapper les parenthèses :

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

Ou placez votre commande entre guillemets :

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

L'un ou l'autre empêchera le shell d'essayer d'interpréter les parathenses lui-même, ce qui vous donnerait une erreur de syntaxe 'syntax error: '(' unexpected ou erreur similaire. Cela n'a vraiment rien à voir avec Oracle, c'est juste comment fonctionne l'interpréteur de shell, avant qu'il n'aille jusqu'à diriger la chaîne en écho vers SQL*Plus.

Incidemment, j'utiliserais généralement un heredoc pour ce genre de chose et éviterais de mettre les informations d'identification sur la ligne de commande afin qu'elles ne soient pas visibles via ps; par exemple :

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