Подтвердить что ты не робот

Подключитесь к sqlplus в оболочке script и запустите SQL-скрипты

У меня есть .sql файл, который представляет собой набор команд oracle pl/sql, и я хочу создать оболочку script для запуска этих команд.

Предположим, что user/[email protected] - мои учетные данные. Какова будет оболочка script для выполнения такой задачи?

4b9b3361

Ответ 1

Например:

sqlplus -s admin/password << EOF
whenever sqlerror exit sql.sqlcode;
set echo off 
set heading off

@pl_script_1.sql
@pl_script_2.sql

exit;
EOF

Ответ 2

Разве что-то сродни этому лучше, безопаснее?:

sqlplus -s /nolog << EOF
CONNECT admin/password;

whenever sqlerror exit sql.sqlcode;
set echo off 
set heading off

@pl_script_1.sql
@pl_script_2.sql

exit;
EOF 

Ответ 3

Если вы хотите перенаправить вывод в файл журнала, чтобы найти ошибки или что-то еще. Вы можете сделать что-то вроде этого.

sqlplus -s <<EOF>> LOG_FILE_NAME user/[email protected]/db
#Your SQL code
EOF

Ответ 4

Это должно решить проблему:

  • WHENEVER SQLERROR EXIT SQL.SQLCODE
  • SPOOL ${SPOOL_FILE}
  • $RC возвращает код выхода оракула
  • cat из $SPOOL_FILE объясняет ошибку
SPOOL_FILE=${LOG_DIR}/${LOG_FILE_NAME}.spool 

SQLPLUS_OUTPUT=`sqlplus -s  "$SFDC_WE_CORE" <<EOF 
        SET HEAD OFF
        SET AUTOPRINT OFF
        SET TERMOUT OFF
        SET SERVEROUTPUT ON

        SPOOL  ${SPOOL_FILE} 

        WHENEVER SQLERROR EXIT SQL.SQLCODE
        DECLARE 

        BEGIN
           foooo 
        --rollback; 
        END;
    /
    EOF` 

RC=$?

if [[ $RC != 0 ]] ; then

    echo " RDBMS exit code : $RC  "     | tee -a ${LOG_FILE}
    cat ${SPOOL_FILE}                   | tee -a ${LOG_FILE}

    cat ${LOG_FILE} | mail -s "Script ${INIT_EXE} failed on $SFDC_ENV" $SUPPORT_LIST

    exit 3

fi