2015-02-05 3 views
0

У меня есть сценарии PL/SQL, и мне было предложено заставить их запускаться автоматически с использованием сценариев оболочки. Проблема в том, что я понятия не имею, как это сделать, поэтому, пожалуйста, если есть способ помочь мне сделать это, я буду благодарен.Сценарий оболочки для автоматического запуска 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

Вам нужно '/' после 'end;' (в новой строке). Но кроме этого у меня есть ** нет ** идеи, что вы спрашиваете –

ответ

1

меня попросили сделать их запустить автоматически с помощью сценариев оболочки

В первую очередь, почему вы беспокоитесь об автоматизации сценария в базе данных . Вы можете просто запланировать его как cron job на OS уровень.

Вы также можете запланировать его на уровне базы данных с помощью DBMS_SCHEDULER или DBMS_JOB, что применимо к вашей версии базы данных.

+0

Я вынужден сделать это с помощью сценария оболочки, но я не знал, как начать –

+0

@Achref, просто следуйте моему ответу. Есть ли что-нибудь еще в отношении вас? –

+0

@LalitKumarB есть ли учебник, который у меня может быть –

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 непосредственно из оболочки. Он ничего не говорит о планировании - по крайней мере, я ничего не вижу в его коде. –

Смежные вопросы