Ciao a tutti,
Ho una funzione che avrà i / p come un ddl sctipt come i / p e eseguirlo,
lasciare
Codice 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=""
}
se io sono l'esecuzione di uno script ddl sbagliato, allora io non sono in grado di catturare il retrun codice 1, piuttosto che si getta 0 se mi sto eseguendo il ddl attraverso lo script funzione.
lasciare che il mio ddl che si è sbagliato,
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) VALORI
( 'MANASMANAS1', 'SCORENETHERLANDS','|',' NULL','15 ',' N ',' standard ',' NULL ',' TUTTI I GIORNI ',' null ', 14: 00', 'N' , 'Y','1 ', SYSDATE);
O / p come segue se sono esecuzione attraverso semplici sqlplus ambiente,
( 'MANASMANAS1', 'SCORENETHERLANDS','|',' NULL','15 ',' N ',' standard ',' NULL ',' TUTTI I GIORNI ',' null ', 14: 00', 'N' , 'Y','1 ', SYSDATE)
*
Errore alla riga 2:
ORA-12899: il valore troppo grande per la colonna "XXXXX". "CBF_CONFIG". "CS_ID"
(effettivi: 11, massimo: 10)
ma se io vado a chiamare tramite la shell di funzioni di cui sopra,
Codice 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 poi è 0, ma è v_cnt "ERRORE alla riga 2:
ORA-12899: il valore troppo grande per la colonna "CLIFBACONFIG". "CBF_CONFIG". "CS_ID"
(effettivi: 11, massimo: 10) "
la mia domanda è: perché io non sono in grado di catturare
SQL.SQLCODE anche se in funzione non vi è una linea
ogniqualvolta SQLError uscita SQL.SQLCODE...
qualsiasi suggerimento per migliorare l'errore cattura sessione ...........