2017-02-16 7 views
1

У меня есть процедура, которая выполняет определенную задачу и завершается. Процедура должна быть реплицирована примерно в 40 баз данных, которые будут выполнять эту процедуру. Мое беспокойство заключается в том, что если все изменения происходят, каждая процедура должна быть изменена.Shell Scripting - Анонимный блок

Как я могу создать скрипт, который принимает входной имя пользователя, пароль и SID и запускает анонимный блок (та же процедура превращается в анонимный блок и поставить на сервере) и запускает его.

+0

Что вы сделали до сих пор? – Nitish

ответ

1

Вот код, который я иногда использую:

dbs_list=" 
DB1.USR1 
DB2.USR2 
" 
for x in ${dbs_list} 
do 
    DB_=` echo ${x}|cut -f "1" -d . ` 
    USR=` echo ${x}|cut -f "2" -d . ` 
    echo "################################    #### " 
    echo "#processinb ${USR} @ ${DB_} -- ...#" 
    echo "enter password:" 
    read -s PWD 
    sqlplus ${USR}/${PWD}@${DB_} << _EOF 
    set serveroutput on 
    prompt HERE is my anonymous code block 
    begin 
     dbms_output.put_line('do my things'); 
    end; 
    /
_EOF 
done 

Обратите внимание на важность:

  • иметь эту / вещь в конце блока PLSQL кода
  • , чтобы этот последний _EOF в самом начале строки после псевдофайлового блока sqlplus (или так называемый известный Here-document)

Надеюсь, что это поможет.