Nếu câu lệnh SELECT INTO không trả lại ít nhất một hàng, thì ORA-01403 được ném.Tại sao no_data_found ORA-01403 là ngoại lệ trong Oracle?
Đối với mọi DBMS khác, tôi biết điều này là bình thường đối với CHỌN. Chỉ Oracle xử lý một INTO SELECT như thế này.
CREATE OR REPLACE PROCEDURE no_data_proc IS
dummy dual.dummy%TYPE;
BEGIN
BEGIN
SELECT dummy
INTO dummy
FROM dual
WHERE dummy = 'Y';
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('Why is this needed?');
END;
END no_data_proc;
Tại sao?
Theo tôi, bạn không cần ngoại lệ này thực sự. Đó là quá nhiều chi phí. Đôi khi nó rất tiện dụng nhưng bạn phải viết toàn bộ BEGIN, EXCEPTION, WHEN, END Block.
Có bất kỳ lý do quan trọng nào mà tôi không thấy không?
Đừng quên bắt QUÁ_MIN_ROWS khi chọn trả về nhiều hàng. – Rene