Die Version des anonymen Blocks im Shell-Skript wird nicht wie gezeigt ausgeführt, weil Sie keinen ein Schrägstrich nach dem Block, um es auszuführen . Wenn Sie das ausführen, erhalten Sie überhaupt keine Ausgabe. Wenn Sie es ändern, um einen Schrägstrich zu haben:
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
dann sehen Sie:
0
PL/SQL procedure successfully completed.
Sie haben die interaktive Version in SQL*Plus auch ohne den Schrägstrich gezeigt, aber Sie müssen diesen gehabt haben, um die von Ihnen gezeigte Ausgabe zu sehen.
Wenn Sie die Null wollen - die von einem dbms_output
zu kommen scheint Aufruf in Ihrer Prozedur statt direkt aus Ihrem anonymen Block - In einer Shell-Variablen, auf die Sie später verweisen können, können Sie die Ausgabe des Heredocs einer Variablen zuweisen:
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}
Beachten Sie, dass ich set feedback off
hinzugefügt habe Sie sehen also nicht, dass die PL/SQL procedure successfully completed
wurde Linie. Wenn Sie das jetzt ausführen, sehen Sie:
Got back MY_VAR as 0
und Sie können mit ${MY_VAR}
alles tun, was Sie brauchen . Es hängt jedoch davon ab, was Sie mit "Erfassen" meinen.