привет всем,
У меня есть функция, которая займет I / P в DDL sctipt как I / P и выполнять ее,
позволять
HTML код:
function execute_sql
{
db_var="$1"
v_cnt=`sqlplus -s XXXXX/XXXXX@aXXX << ENDSQL | sed -e "s/Connected\.//" -e "/^$/d"
set pagesize 0 feedback off verify off heading off echo off serveroutput on size 10000
whenever sqlerror exit SQL.SQLCODE;
$db_var
commit;
exit ;
ENDSQL`
db_var=""
}
если я исполнители неправильно DDL скрипт, то я не смог поймать retrun код, как 1, а не она бросает мне 0, если я выполнении DDL через скрипт функцию.
Пусть моя DDL который является неправильным,
INSERT INTO CBF_CONFIG (CS_ID, CS_NAME, FIELD_SEP, REC_SEP, FIELDS_NUM, FTPS_FILE, DECSN_FMT_TYPE, DECSN_FIELDS, DECSN_SCHDL_TYPE, DECSN_SCHDL, DECSN_TIME, DECSN_UNITWS, UNIQ_FILE_CONVNS, OUTBOX_RETN, UPDATE_TIME) VALUES
( 'MANASMANAS1', 'SCORENETHERLANDS','|',' NULL','15 ',' N ',' Standard ',' NULL ',' ЕЖЕДНЕВНЫЙ ',' NULL ','14: 00', 'N' , 'Y','1 ', SYSDATE);
О / р будет следующим, если я ее исполнителями с помощью простых sqlplus среды,
( 'MANASMANAS1', 'SCORENETHERLANDS','|',' NULL','15 ',' N ',' Standard ',' NULL ',' ЕЖЕДНЕВНЫЙ ',' NULL ','14: 00', 'N' , 'Y','1 ', SYSDATE)
*
ОШИБКА в строке 2:
ORA-12899: стоимость слишком велика для колонки "XXXXX". "CBF_CONFIG". "CS_ID"
(фактические данные: 11, максимум: 10)
Но если я буду называть его через оболочку выше функций,
HTML код:
insert_sql="INSERT INTO CBF_CONFIG ( CS_ID, CS_NAME, FIELD_SEP, REC_SEP, FIELDS_NUM, FTPS_FILE, DECSN_FMT_TYPE, DECSN_FIELDS, DECSN_SCHDL_TYPE, DECSN_SCHDL, DECSN_TIME, DECSN_UNITWS, UNIQ_FILE_CONVNS, OUTBOX_RETN, UPDATE_TIME ) VALUES
('MANASMANAS1','SCORENETHERLANDS','|','NULL','15','N','STANDARD','NULL','DAILY','NULL','14:00','N','Y','1',SYSDATE) ; "
echo $insert_sql
execute_sql "$insert_sql"
rc=$?
echo "exit code $rc"
Затем RC равен 0, но v_cnt это "ошибка: строка 2:
ORA-12899: стоимость слишком велика для колонки "CLIFBACONFIG". "CBF_CONFIG". "CS_ID"
(фактические данные: 11, максимум: 10) "
Мой вопрос, почему я не могу поймать
SQL.SQLCODE хотя в функции есть строка
когда sqlerror выхода SQL.SQLCODE...
любые предложения по улучшению ошибку ловила сессии ...........