如何在MySQL中调用另一个函数中的函数?
这是我的函数funcone5,我试图从中调用另一个函数SPLIT_STR,但我不知道哪里出错了。经过长时间的网上搜索,我找不到想要的解决方案,所以请帮我解决 这是我的第一个功能:如何在MySQL中调用另一个函数中的函数?,mysql,function,stored-procedures,Mysql,Function,Stored Procedures,这是我的函数funcone5,我试图从中调用另一个函数SPLIT_STR,但我不知道哪里出错了。经过长时间的网上搜索,我找不到想要的解决方案,所以请帮我解决 这是我的第一个功能: CREATE DEFINER = `root`@`192.168.0%` FUNCTION `funcone5`(say_code varchar(16), counter int, subject varchar(255)) RETURNS text CHARSET latin1 BEGIN
CREATE
DEFINER = `root`@`192.168.0%`
FUNCTION `funcone5`(say_code varchar(16), counter int, subject varchar(255))
RETURNS text CHARSET latin1
BEGIN
SET @my_counter = 0;
SET @Values = "";
SET @cussubject = "";
SET @Query = CONCAT(
"INSERT INTO tTimeTable (Section_Academic_Year_Code, Week_Day, PeriodNum, Subject_Code) VALUES"
);
vals_loop: LOOP
SET @my_counter = @my_counter + 1;
SET @cussubject = (SELECT SPLIT_STR(subject, "|", @my_counter));
IF @my_counter = 6 THEN
LEAVE vals_loop;
END IF;
SET @Values = CONCAT(
@Values,
" (",
say_code,
", ",
@my_counter,
", ",
counter,
", ",
@cussubject,
")"
);
END LOOP vals_loop;
SET @queries = CONCAT(@Query, @Values);
RETURN @queries;
END
CREATE DEFINER=`root`@`192.168.0%`
FUNCTION `SPLIT_STR`(strtosplit VARCHAR(255), delim char(1), pos tinyint(2)
RETURNS varchar(255) CHARSET latin1
RETURN REPLACE(
SUBSTRING(
SUBSTRING_INDEX(strtosplit, delim, pos),
LENGTH(SUBSTRING_INDEX(strtosplit, delim, pos -1)) + 1
),
delim,
''
)
还有我的第二个功能:
CREATE
DEFINER = `root`@`192.168.0%`
FUNCTION `funcone5`(say_code varchar(16), counter int, subject varchar(255))
RETURNS text CHARSET latin1
BEGIN
SET @my_counter = 0;
SET @Values = "";
SET @cussubject = "";
SET @Query = CONCAT(
"INSERT INTO tTimeTable (Section_Academic_Year_Code, Week_Day, PeriodNum, Subject_Code) VALUES"
);
vals_loop: LOOP
SET @my_counter = @my_counter + 1;
SET @cussubject = (SELECT SPLIT_STR(subject, "|", @my_counter));
IF @my_counter = 6 THEN
LEAVE vals_loop;
END IF;
SET @Values = CONCAT(
@Values,
" (",
say_code,
", ",
@my_counter,
", ",
counter,
", ",
@cussubject,
")"
);
END LOOP vals_loop;
SET @queries = CONCAT(@Query, @Values);
RETURN @queries;
END
CREATE DEFINER=`root`@`192.168.0%`
FUNCTION `SPLIT_STR`(strtosplit VARCHAR(255), delim char(1), pos tinyint(2)
RETURNS varchar(255) CHARSET latin1
RETURN REPLACE(
SUBSTRING(
SUBSTRING_INDEX(strtosplit, delim, pos),
LENGTH(SUBSTRING_INDEX(strtosplit, delim, pos -1)) + 1
),
delim,
''
)
怎么了?在函数中调用函数通常没有问题。实际上,它使我的工具像mysql workbench、phpmyadmin、toad for mysql一样挂起,而不让我保存过程。因此,我认为存在一些问题,因为我在循环中调用函数。