MySQL/MariaDB 中的存储过程不允许使用 NULL 参数

Disallow NULL parameters to stored procedures in MySQL/MariaDB

我可以指定 table 列为 NOT NULL,但如何使存储过程或函数仅与非空参数兼容?在参数名称后添加 NOT NULL 不起作用。

您需要自己验证传递的参数值。如果您使用的是 MySQL 5.5 及更高版本,则可以使用 SIGNAL.

DELIMITER //
CREATE PROCEDURE my_procedure (IN param1 INT)
BEGIN
  IF param1 IS NULL THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'NULL is not allowed.';
  END IF;
  -- do whatever 
END//
DELIMITER ;

这是一个SQLFiddle演示