sql >> Databáze >  >> RDS >> Oracle

Jak zachytit výsledek uložené procedury pomocí skriptu shell?

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



  1. Jak uložit data unicode do oracle?

  2. Jak vložit data do modelu vnořené sady (MySQL);

  3. mysql překrývání dvou tabulek v časových razítkách

  4. Geo vzdálenost MySQL