Uw code is O.K., maar ik zou sommige veranderingen adviseren: Er is geen behoefte om dit te doen: selecteer in ERR_MSG van dubbel; De fout is in deze variabelen: SQLCODE en SQLERRM, zo
UITZONDERING WANNEER DUP_VAL_ON_INDEX TOEN -- het handvatten duplicaat registreert fout
GrabErr (SCRT_NAME, SQLCODE||' '||SQLERRM); Het TERUGSCHROEVEN VAN PRIJZEN; -- Ik heb dit toegevoegd omdat in een procedure GrabErr er AUTONOME TRANSACTIE zou moeten zijn
WANNEER ANDEREN TOEN -- behandelt alle andere fouten GrabErr (SCRT_NAME, SQLCODE||' '||SQLERRM); Het TERUGSCHROEVEN VAN PRIJZEN; EIND;
In de het gebruiks AUTONOME TRANSACTIE van procedureGrabErr. U kunt uw eigen toepassingsfouten ook bepalen. Hier is meer over uitzondering die behandelt: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/errors.htm#i7014
Als u de lijn wilt kennen waar de fout toen voorkomt voeg een variabele toe b.v. n_debug:
VERKLAAR SCRT_NAME VARCHAR2 (400): = „InsRecOnMytable.sql“; n_debug PLS_INTEGER: =0;
BEGIN n_debug: =1; TUSSENVOEGSEL IN MYSCHEMA.MYTABLE (SCHEMA, NAAM, OPMERKING, ORACLE_TYPE, FUNCTIONAL_TYPE, EIGENAAR, DETAIL_OWNER, IS_DYNAMIC, DISPLAY_NAME, ENTITY_NAME) waarden („myschema“, „mytable“, „steekproeflijst 1“, „LIJST“, „BASIC“, „PRODUCT“, „PRODUCT“, 0, „Steekproef 1“, verklaart nietig);
n_debug: =2;
TUSSENVOEGSEL IN MYSCHEMA.MYTABLE (SCHEMA, NAAM, OPMERKING, ORACLE_TYPE, FUNCTIONAL_TYPE, EIGENAAR, DETAIL_OWNER, IS_DYNAMIC, DISPLAY_NAME, ENTITY_NAME) waarden („myschema“, „mytable“, „steekproeflijst 2“, „LIJST“, „BASIC1“, „PRODUCT1“, „PRODUCT1“, 1, „Steekproef 2“, verklaart nietig);
n_debug: =3; bega;
GrabErr (n_debug, SCRT_NAME, „Succes“);
EIND ALS;
UITZONDERING GrabErr (n_debug, SCRT_NAME, SQLCODE||' '||SQLERRM); Het TERUGSCHROEVEN VAN PRIJZEN;
WANNEER ANDEREN TOEN -- behandelt alle andere fouten GrabErr (n_debug, SCRT_NAME, SQLCODE||' '||SQLERRM); Het TERUGSCHROEVEN VAN PRIJZEN; EIND;
Ik doe het deze manier. U kunt een procedure met inputparameter SCRT_NAME ook tot stand brengen en in plaats van manuscript kunt u de procedure gebruiken.
Ik hoop dit een kleine hulp voor u zal zijn.
|