Hej alla,
Jag har en funktion som kommer att ta i / p som ddl sctipt som i / p och verkställa det,
låta
HTML-kod:
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=""
}
Om jag utför en felaktig DDL skript, så är jag inte kunna fånga retrun koden som 1 i stället för den kastar jag 0 om jag verkställer ddl via skript-funktionen.
Låt min DDL som är fel,
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 "," Dagligen "," NULL ', '14: 00', 'N' , 'Y', '1 ', SYSDATE);
O / p kommer så här om jag köra det genom enkla sqlplus miljö,
(MANASMANAS1 ',' SCORENETHERLANDS','|',' NULL "," 15 "," N "," standard "," NULL "," Dagligen "," NULL ', '14: 00', 'N' , 'Y', '1 ', SYSDATE)
*
Fel på rad 2:
ORA-12899: värde för stor för kolumn "XXXXX". "CBF_CONFIG". "CS_ID"
(verklig: 11, max: 10)
men om jag ska kalla det genom ovan nämnda skal funktioner,
HTML-kod:
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"
då RC är 0, men v_cnt är "Fel på rad 2:
ORA-12899: värde för stor för kolumn "CLIFBACONFIG". "CBF_CONFIG". "CS_ID"
(verklig: 11, max: 10) "
Min fråga är varför jag inte kan fånga
SQL.SQLCODE även i funktionen finns en rad
närhelst sqlerror exit SQL.SQLCODE...
några förslag för att förbättra felet fånga sammanträde ...........