Su código es ACEPTABLE, pero recomendaría algunos cambios: No hay necesidad de hacer esto: seleccionar en ERR_MSG de dual; El error está en estas variables: SQLCODE y SQLERRM, tan
EXCEPCIÓN CUANDO DUP_VAL_ON_INDEX ENTONCES -- el duplicado de las manijas registra error
GrabErr (SCRT_NAME, SQLCODE||' '||SQLERRM); RESTAURACIÓN NO ACTUALIZADA; -- He agregado esto porque en un procedimiento GrabErr debe haber TRANSACCIÓN AUTÓNOMA
CUANDO OTROS ENTONCES -- maneja el resto de los errores GrabErr (SCRT_NAME, SQLCODE||' '||SQLERRM); RESTAURACIÓN NO ACTUALIZADA; EXTREMO;
En la TRANSACCIÓN AUTÓNOMA del uso de GrabErr del procedimiento. Usted puede también definir sus propios errores del uso. Aquí está más sobre la dirección de excepción: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/errors.htm#i7014
Si usted quiere saber la línea donde ocurre el error entonces agregar un n_debug de la variable e.g.:
DECLARAR SCRT_NAME VARCHAR2 (400): = “InsRecOnMytable.sql”; n_debug PLS_INTEGER: =0;
COMENZAR n_debug: =1; Parte movible en myschema.mytable (ESQUEMA, NOMBRE, OBSERVACIÓN, ORACLE_TYPE, FUNCTIONAL_TYPE, DUEÑO, DETAIL_OWNER, IS_DYNAMIC, DISPLAY_NAME, ENTITY_NAME) valores (el “myschema”, “mytable”, el “cuadro 1 de la muestra”, “TABLA”, “BASIC”, “PRODUCTO”, “PRODUCTO”, 0, “muestrea 1”, falta de información);
n_debug: =2;
Parte movible en myschema.mytable (ESQUEMA, NOMBRE, OBSERVACIÓN, ORACLE_TYPE, FUNCTIONAL_TYPE, DUEÑO, DETAIL_OWNER, IS_DYNAMIC, DISPLAY_NAME, ENTITY_NAME) valores (el “myschema”, “mytable”, el “cuadro 2 de la muestra”, “TABLA”, “BASIC1”, “PRODUCT1”, “PRODUCT1”, 1, “muestrea 2”, falta de información);
n_debug: =3; confiar;
GrabErr (n_debug, SCRT_NAME, “éxito ");
TERMINAR SI;
EXCEPCIÓN GrabErr (n_debug, SCRT_NAME, SQLCODE||' '||SQLERRM); RESTAURACIÓN NO ACTUALIZADA;
CUANDO OTROS ENTONCES -- maneja el resto de los errores GrabErr (n_debug, SCRT_NAME, SQLCODE||' '||SQLERRM); RESTAURACIÓN NO ACTUALIZADA; EXTREMO;
Lo hago esta manera. Usted puede también crear un procedimiento con el parámetro SCRT_NAME de la entrada y en vez de la escritura usted puede utilizar el procedimiento.
Espero que esto sea una poca ayuda para usted.
|