sql >> Databáze >  >> RDS >> Oracle

Jak předat vstupní parametr při volání uložené procedury z jednoho příkazového řádku

S tím, co jste ukázali, musíte buď opustit závorky:

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

Nebo svůj příkaz uzavřete do uvozovek:

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

Buď zastaví shell pokoušející se interpretovat závorky sám, což by způsobilo 'syntax error: '(' unexpected nebo podobná chyba. Ve skutečnosti to nemá nic společného s Oracle, jde jen o to, jak funguje interpret shellu, než se dostane tak daleko, že převede echoovaný řetězec do SQL*Plus.

Mimochodem, obecně bych pro tento druh věcí použil heredoc a vyhnul bych se vkládání přihlašovacích údajů na příkazový řádek, aby nebyly viditelné přes ps; například:

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



  1. Výchozí hodnoty MySQL 5.5 a 5.6

  2. Jak opravit:JSON_VALUE vrací NULL s dlouhými řetězci (SQL Server)

  3. mysql escapování jednoduchých a dvojitých uvozovek

  4. Výjimky MySQL Connector 6.7.4 a Entity Framework 5