Verze anonymního bloku ve skriptu shellu nebude provedena, jak je uvedeno, protože nemáte lomítko za blokem pro jeho spuštění . Pokud to spustíte, nedostanete vůbec žádný výstup. Pokud jej změníte na lomítko:
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
pak uvidíte:
0
PL/SQL procedure successfully completed.
Ukázali jste interaktivní verzi v SQL*Plus také bez lomítka, ale museli jste to mít, abyste viděli výstup, který jste ukázali.
Pokud chcete nulu - která vypadá, že pochází z dbms_output
volání ve vaší proceduře, spíše než přímo z vašeho anonymního bloku - v proměnné shellu, na kterou se můžete odkázat později, můžete přiřadit výstup heredoc do proměnné:
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}
Všimněte si, že jsem přidal set feedback off
takže nevidíte PL/SQL procedure successfully completed
čára. Nyní, když spustíte, uvidíte:
Got back MY_VAR as 0
a s ${MY_VAR}
můžete dělat, co potřebujete . Záleží však na tom, co máte na mysli pod pojmem 'zachycení'.