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

在MySQL/MariaDB中不允许对存储过程使用NULL参数,mysql,stored-procedures,mariadb,stored-functions,Mysql,Stored Procedures,Mariadb,Stored Functions,我可以指定表列不为NULL,但如何使存储过程或函数仅与非NULL参数兼容?在参数名称后添加NOTNULL无效。您需要自己验证传递的参数值。如果您使用的是MySQL 5.5及更高版本,您可以使用 分隔符// 创建过程my_过程(在参数1 INT中) 开始 如果param1为NULL,则 信号SQLSTATE'45000'设置消息_TEXT='NULL不允许'; 如果结束; --做任何事 结束// 定界符; 这是一个演示@peterm你完全正确,我错过了,删除了我的评论。谢谢。很遗憾,没有更有效的

我可以指定表列不为NULL,但如何使存储过程或函数仅与非NULL参数兼容?在参数名称后添加NOTNULL无效。

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

分隔符//
创建过程my_过程(在参数1 INT中)
开始
如果param1为NULL,则
信号SQLSTATE'45000'设置消息_TEXT='NULL不允许';
如果结束;
--做任何事
结束//
定界符;

这是一个演示

@peterm你完全正确,我错过了,删除了我的评论。谢谢。很遗憾,没有更有效的方法来执行此操作,因为当您必须对所有非空参数执行此操作时,这会给代码增加很多麻烦。