MySQL/MariaDB 中的存储过程不允许使用 NULL 参数
Posted
技术标签:
【中文标题】MySQL/MariaDB 中的存储过程不允许使用 NULL 参数【英文标题】:Disallow NULL parameters to stored procedures in MySQL/MariaDB 【发布时间】:2015-08-16 21:36:25 【问题描述】:我可以指定表列不为空,但是如何使存储过程或函数只与非空参数兼容?在参数名称后添加 NOT NULL 不起作用。
【问题讨论】:
@peterm 你是完全正确的,我错过了,并删除了我的评论。 【参考方案1】:您需要自己验证传递的参数值。如果您使用的是 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演示
【讨论】:
谢谢。太糟糕了,没有更有效的方法可以做到这一点,因为当您必须为所有非空参数执行此操作时,这会给代码增加很多麻烦。以上是关于MySQL/MariaDB 中的存储过程不允许使用 NULL 参数的主要内容,如果未能解决你的问题,请参考以下文章
将 SQL Server 存储过程重写为 MySQL(MariaDB)
MySQL / MariaDB 不区分大小写的排序规则仍然区分大小写吗?