不能';t调用mysql触发器中的函数。错误是:未声明的变量
我的数据库中有一个名为SPLIT_STRING的mysql用户定义函数不能';t调用mysql触发器中的函数。错误是:未声明的变量,mysql,function,triggers,Mysql,Function,Triggers,我的数据库中有一个名为SPLIT_STRING的mysql用户定义函数 CREATE FUNCTION `SPLIT_STR`( x VARCHAR(255), delim VARCHAR(12), pos INT ) RETURNS varchar(255) CHARSET latin1 RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, p
CREATE FUNCTION `SPLIT_STR`(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
) RETURNS varchar(255) CHARSET latin1
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '')
根据位置分割值,我使用触发器更新状态,在这里,我需要一个临时变量,借助函数split_STR
as来存储数据
delimiter //
CREATE TRIGGER `after_tbl1_insert` AFTER INSERT ON `tbl1`
FOR EACH ROW BEGIN
DECLARE cab_meter_new VARCHAR(10);
DECLARE cab_cost_new VARCHAR(10);
SET @cab_meter_new = SPLIT_STR(NEW.gps_rs232, '|', 1);
select SPLIT_STR(NEW.gps_rs232, '|', 1) INTO @cab_meter_new,SPLIT_STR(NEW.gps_rs232, '|', 2) INTO @cab_meter_old; //Throws error
----
---
--
END //
delimiter ;
如果我在触发器中调用一个函数,它会抛出一个错误
#1327 - Undeclared variable: SPLIT_STR
这是调用函数来设置变量的正确方法吗?我们可以在触发器中调用函数吗?我使用的是Mysql版本5.1.66
SET @cab_meter_new := SPLIT_STR(NEW.gps_rs232, '|', 1); //Throwing error here
或者你可以:
Select SPLIT_STR(NEW.gps_rs232, '|', 1) INTO @cab_meter_new;
抱歉,问题是select into的语法
select SPLIT_STR(NEW.gps_rs232, '|', 1) INTO @cab_meter_new,SPLIT_STR(NEW.gps_rs232, '|', 2) INTO @cab_meter_old; // Incorrect - and shows SPLIT_STR is not defined(Thinks as variable)
select SPLIT_STR(NEW.gps_rs232, '|', 1),SPLIT_STR(NEW.gps_rs232, '|', 2) INTO @cab_meter_new, @cab_meter_old; //Correct syntax to store multiple
我也试过了,第二个我已经在问题中提到了,但没有用。。