sql >> Database >  >> RDS >> Oracle

Hoe de invoerparameter door te geven in de opgeslagen procedure die wordt aangeroepen vanaf een enkele opdrachtregel

Met wat je hebt laten zien, moet je ofwel de haakjes ontwijken:

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

Of zet uw commando tussen dubbele aanhalingstekens:

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

Ofwel stopt de shell met het proberen de parathenzen zelf te interpreteren, wat u een 'syntax error: '(' unexpected zou geven of soortgelijke fout. Het heeft eigenlijk niets met Oracle te maken, het is gewoon hoe de shell-interpreter werkt, voordat het zover komt dat de echo-string naar SQL*Plus wordt doorgestuurd.

Overigens zou ik over het algemeen een heredoc voor dit soort dingen gebruiken en vermijden om de inloggegevens op de opdrachtregel te plaatsen, zodat ze niet zichtbaar zijn via ps; bijvoorbeeld:

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



  1. Hoe om te gaan met een optionele waarde die wordt geretourneerd door een query met behulp van de postgre-krat?

  2. Is er een manier om toegang te krijgen tot de vorige rijwaarde in een SELECT-instructie?

  3. Oracle Connect door

  4. Postgres:Hoe formatteer ik een int-tijdstempel als leesbare datumstring?