A versão do bloco anônimo no shell script não será executada conforme mostrado, porque você não tem uma barra após o bloco para executá-lo . Se você executar isso, não obterá nenhuma saída. Se você alterá-lo para ter uma barra:
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
então você verá:
0
PL/SQL procedure successfully completed.
Você mostrou a versão interativa no SQL*Plus sem a barra também, mas você deve ter tido isso para ver a saída que você mostrou.
Se você quer o zero - que parece vir de um
dbms_output
chame em seu procedimento, em vez de diretamente de seu bloco anônimo - n uma variável de shell que você pode consultar mais tarde, você pode atribuir a saída do heredoc a uma variável: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}
Observe que adicionei
set feedback off
para que você não veja o PL/SQL procedure successfully completed
linha. Agora, quando você executar isso, verá:Got back MY_VAR as 0
e você pode fazer o que precisar com
${MY_VAR}
. Depende do que você quer dizer com 'captura'.