Hi all,
Ich habe eine Funktion, die die i / p-als DDL sctipt wie i / p-und ausführen,
lassen
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=""
}
wenn ich eine falsche Ausführung DDL Skript, dann bin ich nicht in der Lage, um die retrun Code als 1 eher, als es wirft mich 0, wenn ich die Ausführung der durch die DDL Skript-Funktion.
Lassen Sie meine ddl, die ist falsch ist,
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 ',' TAG ',' NULL ','14: 00', 'N' , 'Y','1 ', SYSDATE);
die o / p wird wie folgt, wenn ich es durch einfache Ausführung sqlplus Umwelt,
( 'MANASMANAS1', 'SCORENETHERLANDS','|',' NULL','15 ',' N ',' Standard ',' NULL ',' TAG ',' NULL ','14: 00', 'N' , 'Y','1 ', SYSDATE)
*
FEHLER in Zeile 2:
ORA-12899: Wert zu groß für die Spalte "XXXXX". "CBF_CONFIG". "CS_ID"
(Aktuell: 11, max: 10)
aber wenn ich es durch die oben genannten Shell-Funktionen,
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"
rc wird dann 0, aber v_cnt ist "Fehler in Zeile 2:
ORA-12899: Wert zu groß für die Spalte "CLIFBACONFIG". "CBF_CONFIG". "CS_ID"
(Aktuell: 11, max: 10) "
Meine Frage ist, warum ich nicht in der Lage zu fangen
SQL.SQLCODE auch wenn in der Funktion gibt es eine Zeile
wenn SQLError Ausfahrt SQL.SQLCODE...
Vorschläge zur Verbesserung der Fehler Fang Sitzung ...........