sql >> Database >  >> RDS >> Oracle

Hoe het resultaat van een opgeslagen procedure vast te leggen via shellscript?

De versie van het anonieme blok in het shellscript wordt niet uitgevoerd zoals weergegeven, omdat je geen een schuine streep na het blok om het uit te voeren . Als je dat uitvoert, krijg je helemaal geen output. Als je het verandert in een schuine streep:

sqlplus -silent [email protected] <<EOF
set serveroutput on
declare
  DE_REC_COUNT number(10);
begin
    DE_DUP_PROC ('T_MCL_30404_20150317_020','MCL','30404','FT',DE_REC_COUNT);
end;
/
EOF

dan zie je:

0

PL/SQL procedure successfully completed.

Je hebt de interactieve versie in SQL*Plus ook zonder slash getoond, maar dat moet je gehad hebben om de output te zien die je liet zien.

Als je de nul wilt - die lijkt te komen van een dbms_output roep uw procedure op in plaats van rechtstreeks vanuit uw anonieme blok - n een shell-variabele waarnaar u later kunt verwijzen, kunt u de uitvoer van de heredoc toewijzen aan een variabele:

MY_VAR=`sqlplus -silent [email protected] <<EOF
set serveroutput on
set feedback off
declare

DE_REC_COUNT number(10);
begin
    DE_DUP_PROC ('T_MCL_30404_20150317_020','MCL','30404','FT',DE_REC_COUNT);
end;
/

EOF`

printf "Got back MY_VAR as %s\n" ${MY_VAR}

Merk op dat ik set feedback off heb toegevoegd dus u ziet de PL/SQL procedure successfully completed lijn. Als je dat nu uitvoert, zie je:

Got back MY_VAR as 0

en je kunt doen wat je wilt met ${MY_VAR} . Het hangt er echter van af wat je bedoelt met 'vangen'.



  1. Geen ondersteuning voor OVER in MS SQL Server 2005?

  2. Hoe een fout op te lossen die wordt veroorzaakt doordat libmysqlclient.15.dylib niet wordt geladen?

  3. MySQL C API-compilatiefout, crtdbg.h niet gevonden

  4. Ontbrekende rijen bij het opvragen van tabel met Doctrine (Symfony2)