存储过程出现的问题
1 row(s) affected, 1 warning(s): 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
很是不解,请求大鸟给予指教,菜鸟诚心学习。以下是我写的存储过程,上边是callback的时候报的错误
CREATE DEFINER=`weshop`@`%` PROCEDURE `p_MDM_divisionDiv`(
IN `i_divcode` Varchar(32)
,IN `i_divname` Varchar(60)
,IN `i_divfullname` Varchar(60)
,IN `i_parentcode` Varchar(32)
,IN `i_ordeNo` int(11)
,IN `i_INSERT_ID` BIGINT(20)
,IN `i_UPDATE_ID` BIGINT(20))
BEGIN
-- --------------------------------------------------------------------------------
#参数注释
/*
i_divcode Varchar(32) 政区代码
i_divname Varchar(60) 名称
i_divfullname Varchar(60) 全称
i_parentcode Varchar(32) 上级政区代码
i_ordeNo int(11) 排序
i_INSERT_ID BIGINT(20) 插入ID
i_UPDATE_ID BIGINT(20) 更新ID
*/
#变量注释
DECLARE v_returncode bigint(20);
DECLARE v_success_msg varchar(1000);
DECLARE v_error_msg varchar(1000);
DECLARE v_paras varchar(1000);
DECLARE v_sql varchar(500); #需要执行的SQL语句
DECLARE v_Id bigint(20);
#异常处理
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
insert into logdbio(SerialKey,log_datetime,log_logger,log_type,log_paras,log_iserror,log_message)
values(uuid(),sysdate(),'p_MDM_divisionDiv','DataHub',v_paras,1,CONCAT('实体类信息异常。'));
SET v_returncode = 99;
#SET o_Ret=v_returncode;
END;
#初始化
#拼接输入参数,用于记录日志
SET v_paras = CONCAT_WS(',',
CONCAT('DivCode=',i_divcode),
CONCAT('DivName=',i_divname),
CONCAT('DivFullName=',i_divfullname),
CONCAT('ParentCode=',i_parentcode),
CONCAT('Order_no',i_ordeNo),
CONCAT('INSERT_ID=',i_INSERT_ID),
CONCAT('UPDATE_ID=',i_UPDATE_ID)
);
#返回码初始值设置为成功
SET v_returncode = 10;
SET v_success_msg = '';
SET v_error_msg = '';
SET v_sql = '';
SET v_Id = NULL;
#校验输入参数
F_CHECK:BEGIN
IF isnull(i_divcode) THEN
SET v_returncode = 11;
SET v_error_msg = '政区代码不能为空:p_MDM_divisionDiv;';
LEAVE F_CHECK;
END IF;
IF isnull(i_divname) THEN
SET v_returncode = 11;
SET v_error_msg = '政区名称不能为空:p_MDM_divisionDiv;';
LEAVE F_CHECK;
END IF;
IF isnull(i_divfullname) THEN
SET v_returncode = 11;
SET v_error_msg = '全称不能为空:p_MDM_divisionDiv;';
LEAVE F_CHECK;
END IF;
END;
#SET AUTOCOMMIT = 0;
START TRANSACTION;
F_TRANS:BEGIN
#如果校验不通过,不做数据同步
IF v_returncode != 10 THEN
LEAVE F_TRANS;
END IF;
#判断 这些值是不是为空 空就插入 否则修改
SELECT
ID
INTO
v_Id
FROM m_division
WHERE 1=1
AND DivCode=i_divcode
AND DivName=i_divname
AND DivFullName=i_divfullname
AND ParentCode=i_parentcode
AND Order_no=i_ordeNo;
IF isnull(v_Id) || v_Id = '' THEN
#数据库处理
#行政区域信息添加
INSERT INTO m_division(
DivCode
,DivName
,DivFullName
,ParentCode
,Order_no
,INSERT_TIME
,UPDATE_TIME
,INSERT_ID
,UPDATE_ID
)VALUES(
`i_divcode`
,`i_divname`
,`i_divfullname`
,`i_parentcode`
,`i_ordeNo`
,now()
,now()
,`i_INSERT_ID`
,`i_UPDATE_ID`
);
ELSE
UPDATE m_division
SET
DivCode=`i_divcode`,
DivName=`i_divname`,
DivFullName=`i_divfullname`,
ParentCode=`i_parentcode`,
Order_no=`i_ordeNo`,
INSERT_TIME=now(),
UPDATE_TIME=now(),
INSERT_ID=`i_INSERT_ID`,
UPDATE_ID=`i_UPDATE_ID`
WHERE ID=v_Id;
END IF;
SET v_success_msg = CONCAT('实体类信息政区代码:',i_divcode,'(名称):',i_divname,'(全称):',i_divfullname,'(排序):',i_ordeNo,';');
END;
COMMIT;
#记录日志
IF v_returncode = 10 THEN
SET v_success_msg = CONCAT(v_success_msg,'返回码:',v_returncode,';');
insert into logdbio(SerialKey,log_datetime,log_logger,log_type,log_paras,log_iserror,log_message)
values(uuid(),sysdate(),'p_MDM_divisionDiv','DataHub',v_paras,0,v_success_msg);
ELSE
SET v_error_msg = CONCAT(v_error_msg,'返回码:',v_returncode,';');
insert into logdbio(SerialKey,log_datetime,log_logger,log_type,log_paras,log_iserror,log_message)
values(uuid(),sysdate(),'p_MDM_divisionDiv','DataHub',v_paras,1,v_error_msg);
END IF;
COMMIT;
/*返回DataHub
10:成功
11:其他错误
*/
#SET o_Ret=v_returncode;
select v_returncode;
END