Tôi có một thủ tục được lưu trữ PL/SQL bên trong mà tôi muốn chạy một số cập nhật, sau đó nắm bắt bất kỳ trường hợp ngoại lệ nào và trả lại chúng một tham số ngoài. Để đơn giản vì lợi ích trong khối mã bên dưới, tôi chỉ đơn giản là xuất mã ngoại lệ và thông báo lỗi vào bàn điều khiển. Tuy nhiên, khối mã bên dưới không hoạt động (Tôi gặp phải lỗi cú pháp "tìm thấy/mong đợi")Cách bắt và trả lại (hoặc in) một ngoại lệ trong một ORACLE PL/SQL tạo hoặc thay thế thủ tục lưu sẵn
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;
/
Cú pháp chính xác cho những gì tôi đang cố gắng làm là gì?
Tôi đọc trên một diễn đàn
"Khi sử dụng Tạo hoặc Replace cú pháp, bạn không thể sử dụng Declare. Khai báo chỉ dành cho các khối ẩn danh mà không được đặt tên. Vì vậy, hoặc loại bỏ dòng 1 và tạo ra một ẩn danh chặn hoặc xóa dòng 2 và tạo thủ tục có tên. "
nhưng tôi không chắc chắn cách tạo khối ẩn danh hoặc tạo thủ tục được đặt tên để thực hiện những gì tôi muốn làm (nếu đó thực sự là 'giải pháp'). Ai đó có thể giúp một tay không?
Trừ khi bạn đang làm điều gì đó hữu ích với thông tin ngoại lệ, bạn không cần phải nắm bắt nó. Cách tốt nhất để truyền thông tin ngoại lệ cho hàm gọi là không làm gì cả, và để cho ngoại lệ tự nhiên tăng lên. Điều này sử dụng ít mã và bảo tồn số dòng thực của lỗi. –