Hi all,
Ik heb een functie die zal ik nemen / p als een ddl sctipt als i / p-en uitvoeren,
laten
HTML-code:
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=""
}
als ik het uitvoeren van een verkeerde DDL script, dan ben ik niet in staat de retrun code 1 vangen in plaats van 0 gooit het me als ik de DDL ben door middel van het uitvoeren van het script functie.
laat mijn ddl die verkeerd is,
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 ',' Dagelijks ',' NULL ', '14: 00', 'N' , 'Y', '1 ', SYSDATE);
de o / p zal als volgt als ik het ben uitvoeren door eenvoudige sqlplus milieu,
( 'MANASMANAS1', 'SCORENETHERLANDS','|',' NULL', '15 ',' N ',' Standard ',' NULL ',' Dagelijks ',' NULL ', '14: 00', 'N' , 'Y', '1 ', SYSDATE)
*
FOUT op regel 2:
ORA-12899: waarde te groot voor de kolom "XXXXX". "CBF_CONFIG". "CS_ID"
(actueel: 11, maximum: 10)
Maar als ik ga hem bellen via de bovenstaande shell functies,
HTML-code:
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"
dan rc is 0, maar v_cnt is "Fout op regel 2:
ORA-12899: waarde te groot voor de kolom "CLIFBACONFIG". "CBF_CONFIG". "CS_ID"
(actueel: 11, maximum: 10) "
mijn vraag is waarom ik niet in staat ben te vangen
SQL.SQLCODE ook al in de functie is er een lijn
wanneer SQLError afrit SQL.SQLCODE...
iedere suggestie ter verbetering van de fout vangen sessie ...........