2012-03-16 54 views

回答

1

創建xxxx.sql文件並執行它像這樣:

set serveroutput on; 
execute STORED_PROCEDURE; 
set serveroutput off; 
exit 

您需要一種方法來執行你的腳本,我用cron在基於* nix系統。我的腳本看起來像這樣

#!/bin/sh 
# This short shell script calls the XXXX Stored Procedure 
# drive. 
PATH=$PATH:/opt/oracle/local/bin:/usr/local/bin 
export ORACLE_SID=XXXX; 
export ORAENV_ASK=NO;  
export TWO_TASK=XXXXXXXXX;  
. /usr/local/bin/oraenv 
sqlplus USERID/PASSWPRD @SQL_Script_to_call_stored_Proceudre.sql 
exit 
+1

你錯過了'@'。 Persaonlly我也總是使用'-s'標誌來減少噪音;特別是如果從'cron'運行(儘管這似乎不是一個要求)明確地設置了環境:'ORACLE_HOME','ORACLE_SID'等。 – 2012-03-17 09:30:59

+1

@Alex Poole - 你100%正確。在我發佈之前,我清理了所有這些東西的例子。更多的偏執狂意味着我會在事故發生後的一天發佈密碼或關鍵數據庫名稱。我現在把它清理乾淨吧 – ProfessionalAmateur 2012-03-17 22:49:54

+0

這不是偏執狂,它們真的會讓你...... * 8-) – 2012-03-17 23:29:40

0

下面是一個例子:

創建SH文件 「callProcedureFromBash.sh」

#!/bin/bash  this is a comment 

#if you can access sqlplus already, you don't need following 2 lines 
export ORACLE_HOME = /efs/dist/oracledb/client/10G/exec 
export PATH=$PATH:$ORACLE_HOME/bin 

sqlplus "userid/[email protected](DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = WWW.YOURHOST.COM) (PORT = 12345) (CONNECT_DATA = (SID = HXZ524))))" <<END 

DECLARE 
    a int; 
BEGIN 
    packagename.Procedurename(a); 
END; 
/
commit;