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'.