Hej alle,
Jeg har en funktion, som vil tage i / p som en ddl sctipt som I / P og fuldbyrde den,
lade
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=""
}
hvis jeg udføre en forkert ddl script, så jeg er ikke i stand til at fange retrun koden som 1 i stedet for det kaster mig 0, hvis jeg udfører den ddl gennem function.
lad min ddl der er forkert, er,
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 ',' Daglig ',' NULL ', '14: 00', 'N' , 'Y', '1 ', SYSDATE);
den o / p vil som følger, hvis jeg køre den gennem enkle sqlplus miljø,
( 'MANASMANAS1', 'SCORENETHERLANDS','|',' NULL', '15 ',' N ',' Standard ',' NULL ',' Daglig ',' NULL ', '14: 00', 'N' , 'Y', '1 ', SYSDATE)
*
FEJL på linie 2:
ORA-12899: value for stort til kolonnen "XXXXX". "CBF_CONFIG". "CS_ID"
(faktisk: 11, maksimum: 10)
men hvis jeg vil kalde det gennem ovenstående Shell funktioner,
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"
Derefter rc er 0, men v_cnt er "FEJL på linie 2:
ORA-12899: value for stort til kolonnen "CLIFBACONFIG". "CBF_CONFIG". "CS_ID"
(faktisk: 11, maksimum: 10) "
mit spørgsmål er derfor, jeg er ikke i stand til at fange
SQL.SQLCODE selv i den funktion, der er en linje
når sqlerror exit SQL.SQLCODE...
nogen forslag til at forbedre den fejl at fange session ...........