如何在存储过程中抛出异常 例如:
@temp int =0
As
BEGIN
SELECT @int = COUNT(*) FROM TABLE1
END
IF(@temp>0)
throw SQL Exception
P / S:不使用返回值
答案 0 :(得分:18)
RAISERROR用于MSSQL Server。正如@Marc Gravell:注意严重性必须>> = 16才能表现为SqlException。
为MySql阅读this SO answer。
此blog post还说明了如何在MySQl中执行此操作(如果< = 6.0)
答案 1 :(得分:1)
在MySQL中,无法在存储过程中抛出异常,但您可以通过从不存在的表中进行选择来强制执行错误。
如果tablename给出了错误的描述,它会有所帮助。
示例:
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 ;