2011-08-11 30 views

Trả lời

18

RAISERROR cho MSSQL Server. Như @Marc Gravell: lưu ý mức độ nghiêm trọng phải> = 16 để nó xuất hiện dưới dạng một SqlException.

Đọc this SO answer cho MySql.

blog post này cũng cho thấy làm thế nào để làm điều đó trong MySQL (nếu < = 6,0)

+14

lưu ý mức độ nghiêm trọng phải> = 16 để nó xuất hiện dưới dạng 'SqlException' –

+0

Tôi thử RAISERROR ('Lỗi được tăng lên', - Nội dung tin nhắn. 16, - Mức độ nghiêm trọng. 1 - Tiểu bang. ); những gì tôi muốn hỏi là điều này sẽ chấm dứt các thủ tục được lưu trữ? – Xitrum

+0

@MarcGravell - Tôi không hiểu 'mức độ nghiêm trọng> = 16'? – xameeramir

1

Trong MySQL không có cách nào để ném một ngoại lệ trong một thủ tục lưu trữ, nhưng bạn có thể buộc một lỗi bằng cách chọn từ một tổ chức phi bảng hiện có.
Nó giúp nếu tablename đưa ra một mô tả về lỗi.

Ví dụ:

DELIMITER $$ 

CREATE PROCEDURE throw_exception (IN param1 INTEGER) 
BEGIN 
    DECLARE testvar INTEGER; 
    SELECT testfield INTO testvar FROM atable WHERE id = param1 LIMIT 1; 
    IF testfield IS NULL THEN 
    /*throw the error here*/ 
    SELECT * FROM 
     error_testfield_in_atable_not_found_youve_entred_a_nonexisting_id_in_throw_exception; 
    END IF; 
END $$ 

DELIMITER ; 
Các vấn đề liên quan