不能';t调用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

我的数据库中有一个名为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, 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

我也试过了,第二个我已经在问题中提到了,但没有用。。