sql >> データベース >  >> RDS >> Oracle

シェルスクリプトを介してストアドプロシージャの結果をキャプチャするにはどうすればよいですか?

    実行するブロックの後のスラッシュ 。それを実行すると、出力がまったく得られません。スラッシュを付けるように変更した場合:

    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
    

    次に、次のように表示されます:

    0
    
    PL/SQL procedure successfully completed.
    

    SQL * Plusでスラッシュなしの対話型バージョンも示しましたが、表示した出力を表示するには、スラッシュが必要です。

    ゼロが必要な場合-これはdbms_outputから来ているようです 匿名ブロックから直接ではなく、プロシージャを呼び出します。後で参照できるシェル変数では、ヒアドキュメントの出力を変数に割り当てることができます。

    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}
    

    set feedback offを追加したことに注意してください そのため、PL/SQL procedure successfully completedは表示されません。 ライン。実行すると、次のように表示されます。

    Got back MY_VAR as 0
    

    ${MY_VAR}で必要なことは何でもできます 。ただし、「キャプチャ」の意味によって異なります。



    1. MySQL PHPのクエリに配列を渡すことにより、OR条件を動的に作成します

    2. Symfony2コンソールコマンドからマスター/スレーブdoctrine2設定を使用する方法

    3. MySQL-月ごとにカウント(欠落しているレコードを含む)

    4. SQLServerデータベースをあるサーバーから別のサーバーに移動するためのヒント-RajanSinghによるSQLチュートリアル