0

我有 PL/SQL 脚本,我被要求使用 shell 脚本让它们自动运行。问题是我不知道如何做到这一点,所以如果有任何方法可以帮助我做到这一点,我将不胜感激。

我试图掌握基础知识,但离我需要的还很远:

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

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

echo $output 
4

2 回答 2

2

你可以这样做:

sqlplus -S user/pw@//ip:1521/db <<ENDOFSQL
set serveroutput on;
DECLARE
    v_return PLS_INTEGER;
BEGIN

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

ENDOFSQL

如果您要做的只是事后回显输出,则无需在变量中捕获输出。

于 2015-02-05T15:00:26.093 回答
1

我被要求使用 shell 脚本让它们自动运行

首先,您为什么要担心数据库级别的脚本自动化。您可以简单地将其安排为操作系统级别cron 作业。

您也可以使用DBMS_SCHEDULER或将其安排在数据库级别DBMS_JOB,以适用于您的数据库版本。

于 2015-02-05T14:21:35.760 回答