0

sql * loaderによってファイルからデータをアップロードし、アップロードされたデータを続行するストアドプロシージャを実行する.shスクリプトを作成しました。

#!/bin/bash
ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1
export ORACLE_HOME
PATH=$PATH:$ORACLE_HOME/bin
export PATH
export ORACLE_SID=RSK

sqlldr userid=MY_SCHEME/PASS@MY_SID control=!_control_file.ctl LOG=upload.log errors=100

# SQl procedures start  
sqlplus -s MY_SCHEME@RSK/PASS<<end
# Procedure which transport data from stage tables to table_procedure_1
execute MY_SCHEME.procedure_1();
commit;
execute MY_SCHEME.procedure_2(); 
commit;
end

#exit from .sh script
exit; 

その結果、データをアップロードしましたが、MY_SCHEME.procedure_1()はアップロードされたデータを続行しません。アップロード後にデータのコミットがなかったようです。どうか、私のsciptを調整するのを手伝ってください。ありがとうございました。

ps sql * plus(.sh scirptからではない)を使用してプロシージャを実行すると、正常に動作します。

それは正しく機能します:

sqlplus scheme/pass@database<<end
SET SERVEROUTPUT ON                       
begin                                     
  dbms_output.put_line ('Running procedure 1');
  proc1();
  COMMIT; 
  dbms_output.put_line('procedure completed');
end;
/ 
exit
end

みんなありがとう!!!

4

1 に答える 1