Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:从函数调用存储过程_Mysql_Stored Procedures - Fatal编程技术网

MySQL:从函数调用存储过程

MySQL:从函数调用存储过程,mysql,stored-procedures,Mysql,Stored Procedures,我在MySQLString\u Split中创建了存储过程 DROP PROCEDURE IF EXISTS String_Split; DELIMITER $$ CREATE PROCEDURE String_Split(vString VARCHAR(8000),vSeparator VARCHAR(5)) BEGIN DECLARE vDone tinyint(1) DEFAULT 1; DECLARE vIndex INT DEFAULT 1; DECLARE vSubString V

我在MySQL
String\u Split
中创建了存储过程

DROP PROCEDURE IF EXISTS String_Split;
DELIMITER $$
CREATE PROCEDURE String_Split(vString VARCHAR(8000),vSeparator VARCHAR(5))
BEGIN

DECLARE vDone tinyint(1) DEFAULT 1;
DECLARE vIndex INT DEFAULT 1;
DECLARE vSubString VARCHAR(500);

DROP TEMPORARY TABLE IF EXISTS tmpIDList;
CREATE TEMPORARY TABLE IF NOT EXISTS tmpIDList (ID varchar(500));

WHILE vDone > 0 DO
  SET vSubString = SUBSTRING(vString, vIndex,
                    IF(LOCATE(vSeparator, vString, vIndex) > 0,
                      LOCATE(vSeparator, vString, vIndex) - vIndex,
                      LENGTH(vString)
                    ));
  IF LENGTH(vSubString) > 0 THEN
      SET vIndex = vIndex + LENGTH(vSubString) + 1;
      INSERT INTO tmpIDList VALUES (vSubString);
  ELSE
      SET vDone = 0;
  END IF;
END WHILE;

END$$
DELIMITER ;
我正在从函数调用此存储过程

DROP FUNCTION IF EXISTS test;
DELIMITER $$
    CREATE FUNCTION test (IDLIST VARCHAR(255))
    RETURNS VARCHAR(2000)
    BEGIN
        DECLARE returnData VARCHAR(2000);

        DROP TEMPORARY TABLE IF EXISTS TEMP1;       
        CREATE TEMPORARY TABLE IF NOT EXISTS TEMP1(id bigint);

        CALL String_Split(IDLIST,',');
        INSERT INTO TEMP1 (SELECT * FROM tmpIDList);

        SELECT GROUP_CONCAT(first_name) INTO returnData
        FROM user_master 
        WHERE id IN (SELECT id FROM TEMP1);

        RETURN returnData;
    End $$
DELIMITER ;
但我有以下例外

Error Code: 1146. Table 'backup25dec_latest.tmpidlist' doesn't exist

我无法重现这个问题

确实生成了两个警告(注意),但该行为记录在中

mysql>显示警告;
+-------+------+---------------------------+
|级别|代码|消息|
+-------+------+---------------------------+
|注| 1051 |未知表格“temp1”|
|注| 1051 |未知表格“tmpidlist”|
+-------+------+---------------------------+
一组2行(0.00秒)

我当时使用的是MySQL 5.0,我认为该功能可能不适用于它。我升级到了5.6,它工作正常。谢谢你的关心