salut tous,
J'ai une fonction qui prendra i / p en ddl sctipt que i / p et l'exécuter,
laisser
Code 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=""
}
si je suis l'exécution d'un script ddl tort, alors je ne suis pas capable d'attraper la retrun code 1 plutôt que comme il me jette 0 si je suis l'exécution du script ddl par la fonction.
que mon ddl qui est faux est,
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 ',' TOUS LES JOURS ',' NULL ','14: 00', 'N' , 'Y','1 ', SYSDATE);
l'o / p comme suit, si je suis d'exécution par simple sqlplus environnement,
( 'MANASMANAS1', 'SCORENETHERLANDS','|',' NULL','15 ',' N ',' Standard ',' NULL ',' TOUS LES JOURS ',' NULL ','14: 00', 'N' , 'Y','1 ', SYSDATE)
*
ERREUR à la ligne 2:
ORA-12899: valeur trop grande pour la colonne "XXXXX". "CBF_CONFIG". "CS_ID"
(réelle: 11, maximum: 10)
mais si je vais l'appeler par le biais de la coque au-dessus de fonctions,
Code 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"
puis rc est 0, mais est v_cnt "ERREUR à la ligne 2:
ORA-12899: valeur trop grande pour la colonne "CLIFBACONFIG". "CBF_CONFIG". "CS_ID"
(réelle: 11, maximum: 10) "
ma question est pourquoi je ne suis pas capable d'attraper
SQL.SQLCODE même si, dans la fonction il ya une ligne
chaque fois sqlerror sortie SQL.SQLCODE...
toute suggestion pour améliorer la capture de l'erreur session ...........