如何在存储过程中抛出SQLException

时间:2011-08-11 12:58:37

标签: c# mysql tsql sql-server-2008

如何在存储过程中抛出异常 例如:

@temp int =0

As 
BEGIN
SELECT @int = COUNT(*) FROM TABLE1
END

IF(@temp>0)
throw SQL Exception

P / S:不使用返回值

2 个答案:

答案 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 ;