hola a todos,
Tengo una función que tendrá i / p como ddl sctipt como i / p, y ejecutarlo,
dejar
Código 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 estoy equivocado la ejecución de una secuencia de comandos ddl, entonces no soy capaz de coger el retrun como código 1, que no me tira 0 si estoy ejecutando el ddl a través de la función de secuencia de comandos.
dejar que mi ddl que está mal, es decir,
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 ',' Diario ',' NULL ','14: 00', 'N' , 'Y','1 ', SYSDATE);
el o / p de la siguiente manera si soy de ejecución a través de simples sqlplus medio ambiente,
( 'MANASMANAS1', 'SCORENETHERLANDS','|',' NULL »,« 15 »,' N ',' Standard ',' NULL ',' Diario ',' NULL ','14: 00', 'N' , 'Y','1 ', SYSDATE)
*
ERROR en la línea 2:
ORA-12899: valor demasiado grande para la columna "XXXXX". "CBF_CONFIG". "CS_ID"
(actual: 11, máximo: 10)
pero si voy a llamar a través de las funciones de depósito,
Código 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 entonces es 0, pero es v_cnt "ERROR en la línea 2:
ORA-12899: valor demasiado grande para la columna "CLIFBACONFIG". "CBF_CONFIG". "CS_ID"
(actual: 11, máximo: 10) "
mi pregunta es ¿por qué no soy capaz de atrapar
SQL.SQLCODE a pesar de que en la función hay una línea
cuando sqlerror salida SQL.SQLCODE...
cualquier sugerencia para mejorar el período de sesiones de captura de error ...........