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
みんなありがとう!!!