Versionen av det anonyma blocket i skalskriptet kommer inte att köras som visas, eftersom du inte har ett snedstreck efter blocket för att köra det . Om du kör det får du ingen effekt alls. Om du ändrar den till att ha ett snedstreck:
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
då ser du:
0
PL/SQL procedure successfully completed.
Du har visat den interaktiva versionen i SQL*Plus utan snedstreck också, men du måste ha haft det för att se utdata du visade.
Om du vill ha nollan - som verkar komma från en dbms_output
anropa din procedur, snarare än direkt från ditt anonyma block - i en skalvariabel som du kan hänvisa till senare kan du tilldela utdata från heredoc till en variabel:
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}
Observera att jag har lagt till set feedback off
så du ser inte att PL/SQL procedure successfully completed
linje. Nu när du kör det kommer du att se:
Got back MY_VAR as 0
och du kan göra vad du behöver med ${MY_VAR}
. Det beror på vad du menar med "fånga".