Tengo un procedimiento almacenado PL/SQL dentro del cual quiero ejecutar varias actualizaciones, luego capturar las excepciones y devolverlas en un parámetro de salida. Para simplificar, en el siguiente bloque de código, simplemente estoy enviando el código de excepción y el mensaje de error a la consola. Sin embargo, el bloque de código siguiente no funciona (estoy experimentando una "esperando encontrado /" error de sintaxis)Cómo capturar y devolver (o imprimir) una excepción en un ORACLE PL/SQL crear o reemplazar un procedimiento almacenado
CREATE OR REPLACE PROCEDURE DBP.TESTING_SP AS
DECLARE
v_code NUMBER;
v_errm VARCHAR2(64);
BEGIN
UPDATE PS_NE_PHONE_TBL SET NE_PHONE_TYPE = 'TEST' WHERE NEMPLID_TBL = 'N14924';
EXCEPTION
WHEN OTHERS THEN
v_code := SQLCODE;
v_errm := SUBSTR(SQLERRM, 1, 64);
DBMS_OUTPUT.PUT_LINE (v_code || ' ' || v_errm);
END TESTING_SP;
/
¿Cuál es la sintaxis correcta para lo que yo estoy tratando de hacer?
leí en un foro
"Al utilizar la sintaxis crear o sustituir, no se puede utilizar Declare. Declare es sólo para los bloques anónimos que no se nombran. Así que, o quitar la línea 1 y crear un anónimo bloquear o eliminar la línea 2 y crear un procedimiento con nombre ".
pero no estoy seguro de cómo crear un bloque anónimo o crear un procedimiento con nombre para lograr lo que quiero hacer (si eso, de hecho, es la 'solución'). ¿Podría alguien echar una mano?
A menos que esté haciendo algo útil con la información de excepción, no hay necesidad de atraparlo. La mejor manera de pasar información de excepción a la función de llamada es no hacer nada, y dejar que la excepción aumente naturalmente. Esto utiliza menos código y conserva el número de línea real del error. –