mysql - 当所选列中没有值时抛出异常(存储过程)

标签 mysql stored-procedures

DROP PROCEDURE IF EXISTS raise;

CREATE PROCEDURE raise(@uld int)
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN 
    SET @uld = (select ULD_ID from doctor_personal_details)
    IF(@uld = NULL) THEN
        SET MESSAGE_TEXT = ' error occurred';
END;

我在 doctor_personal_details 中有列 ULD_ID,当 ULD_ID 中没有数据时,我需要显示错误消息。

最佳答案

您需要做的是检查是否存在提供的uld记录,如果没有则返回SIGNAL错误,例如:

BEGIN

DECLARE CNT INT;

SELECT COUNT(*) INTO CNT
FROM doctor_personal_details
WHERE ULD_ID = uld;

IF(C = 0) THEN 
  SIGNAL SQLSTATE '45000'
  SET MESSAGE_TEXT = 'No records exist with given uid';
ELSE
  SELECT 'Success' AS message;
END IF;

END

关于mysql - 当所选列中没有值时抛出异常(存储过程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45274529/

相关文章:

mysql - 使用循环在 SQL 中查找多个距离

所有行上的 MySQL GROUP BY 条件(不是 WHERE 或 HAVING)

MySQL 临时表游标

sql - 如何在 postgresql 中排除上下文引发异常

MySQL - 存储过程语法问题

sql - 如何查找影响特定列的存储过程列表?

sql-server - 这个存储过程是否安全,不会受到 SQL 注入(inject)的影响?

MySQL查询错误

mysql - Google Cloud MySQL 托管实例使用 100% CPU 数小时。什么在使用它?

php - 提高PHP Mysql中网页的处理速度