0

我写了一个 .sh 脚本,它应该通过 sql*loader 从文件上传数据,然后运行应该继续上传数据的存储过程。

#!/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() 没有继续上传数据。上传后似乎没有数据提交。请帮我coorect我的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

1

您的问题可能与 sqlplus 命令行有关。你sqlplus -s user@schema/password在需要的时候使用sqlplus user/password@schema 
当然-s,使 sqlplus 完全静音的开关并没有真正的帮助。

此外,您应该EXIT在 SQLplus 脚本中包含一个命令(在 eof 行之前)。

于 2012-05-15T06:36:02.430 回答