如何在MySQL中调用另一个函数中的函数?

如何在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

这是我的函数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
    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一样挂起,而不让我保存过程。因此,我认为存在一些问题,因为我在循环中调用函数。