最近数据库迁移,在mysql创建function函数的时候出现了一个错误。
1422 - Explicit or implicit commit is not allowed in stored function or trigger.
函数或者触发器不允许进行提交操作。
是因为在创建函数的过程,我使用了存过调用函数,而这个存过会进行插入记录操作,所以在function中直接报错,解决方案:
把创建函数改成创建存储过程,利用存过的返回参数out类型来达到一样的目的。
CREATE PROCEDURE `proc_test`(in P_TABLE_NAME VARCHAR(100)
,in P_DATE VARCHAR (10) ,out RES int)
在存过的最后再给RES赋值:
set @res=1;
这样在别的存过引用就可以了:
CALL proc_test('t_test','20220305',@RES) ;
SELECT @RES INTO '变量名';