2015-02-05 120 views
0

我有PL/SQL脚本,并被要求让它们使用shell脚本自动运行。问题是,我不知道如何做到这一点,所以请如果有什么方法来帮助我做,我会感激。外壳脚本自动运行PL/SQL

我试图采取的基本知识,但它远离我需要什么:

output="$(sqlplus -S user/[email protected]//ip:1521/db <<ENDOFSQL 
set serveroutput on; 
DECLARE 
    v_return PLS_INTEGER; 
BEGIN 

    DBMS_OUTPUT.PUT_LINE(v_return); 
END; 
exit; 
ENDOFSQL)" 

echo $output 
+1

你需要一个'/'后'结束;'(在新行)。但,除了我没有** **知道什么你问 – 2015-02-05 14:07:15

回答

1

有人问我,让他们使用shell脚本

在首位自动运行,为什么你担心脚本自动化在数据库级别。你可以简单地安排它在OS水平cron作业

您也可以使用DBMS_SCHEDULERDBMS_JOB(以适用于您的数据库版本的数据库为准)在数据库级别安排它。

+0

我不得不用shell脚本做到这一点,但我不知道如何下手 – 2015-02-05 15:19:24

+0

@Achref,只要按照我的答案。还有什么关于你的吗? – 2015-02-05 15:22:38

+0

@LalitKumarB是没有办法,我可以有 – 2015-02-05 15:30:07

2

你可以这样说:

sqlplus -S user/[email protected]//ip:1521/db <<ENDOFSQL 
set serveroutput on; 
DECLARE 
    v_return PLS_INTEGER; 
BEGIN 

    DBMS_OUTPUT.PUT_LINE('Hello World'); 
END; 
. 
/

ENDOFSQL 

没有必要捕获输出的变量,如果你打算做是继呼应输出。

+1

的问题是:如何运行PL/SQL块直接从shell。他没有提及任何关于调度的事情 - 至少我没有看到他的代码中有任何东西。 – 2015-02-05 16:22:47