Hi all,
nekem van egy funkció, amely figyelembe i / p, mint ahogy ddl sctipt i / p, és futtasd le,
hagy
HTML kód:
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=""
}
ha én vagyok a hibás végrehajtó DDL szkript, akkor én nem képes elkapni a retrun kód 1 helyett azt veti nekem 0, ha én hajtja végre a DDL keresztül a script funkció.
hadd én ddl, ami rossz van,
ILLESSZE BE 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', 'napi', 'NULL', '14: 00 ',' N ' , 'Y', '1 ', SYSDATE);
Az O / P lesz a következő, ha én vagyok az egyszerű végrehajtó SQLPlus környezet,
( "MANASMANAS1 ',' SCORENETHERLANDS','|',' NULL ', '15', 'N', 'STANDARD', 'NULL', 'napi', 'NULL', '14: 00 ',' N ' , 'Y', '1 ', SYSDATE)
*
Hiba a 2. sor:
ORA-12899: érték túl nagy oszlop "XXXXX". "CBF_CONFIG". "CS_ID"
(tényleges: 11, maximum: 10)
de ha én megyek keresztül hívja a fenti shell funkciók,
HTML kód:
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 akkor 0, de v_cnt a "ERROR at line 2:
ORA-12899: érték túl nagy oszlopban CLIFBACONFIG "." CBF_CONFIG "." CS_ID "
(tényleges: 11, maximum: 10) "
A kérdésem az, hogy miért nem vagyok képes fogni
SQL.SQLCODE bár a funkció van a sor
ha sqlerror exit SQL.SQLCODE...
minden olyan javaslatot, hogy javítsa a hibát elfogást session ...........