Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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_Database_Stored Procedures - Fatal编程技术网

Mysql 此存储过程没有插入记录有什么问题

Mysql 此存储过程没有插入记录有什么问题,mysql,database,stored-procedures,Mysql,Database,Stored Procedures,存储过程: DELIMITER $$ USE `test`$$ DROP PROCEDURE IF EXISTS `UpdateRelatedAccounts`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateRelatedAccounts`() BEGIN DECLARE ssn_sel_id VARCHAR(255) DEFAULT 0; DECLARE primary_sel_id CHAR(36) DEFA

存储过程:

DELIMITER $$

USE `test`$$

DROP PROCEDURE IF EXISTS `UpdateRelatedAccounts`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateRelatedAccounts`()
BEGIN 
    DECLARE ssn_sel_id VARCHAR(255) DEFAULT 0;
    DECLARE primary_sel_id CHAR(36) DEFAULT 0;
    DECLARE secondary_sel_rel CHAR(36) DEFAULT 0;
    DECLARE no_more_rows BOOLEAN;
    DECLARE num_rows INT DEFAULT 0;

  DECLARE ssn_all_cur CURSOR FOR
  SELECT ac.ssn, ac.id AS primary_id, ac_b.id AS secondary_id FROM ssn ac LEFT JOIN ssn ac_b ON  ac.ssn =  ac_b.ssn WHERE ac.ssn NOT IN ('','000-00-0000') AND ac.id != ac_b.id;

 DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_rows = TRUE;

 OPEN ssn_all_cur;
 SELECT FOUND_ROWS() INTO num_rows;
    the_loop: LOOP
        FETCH  ssn_all_cur
        INTO ssn_sel_id, primary_sel_id, secondary_sel_rel;

        IF no_more_rows THEN
        CLOSE ssn_all_cur;
        LEAVE the_loop;
        END IF;     
      INSERT INTO `ssn_related` ( `ssn_primary`, `ssn_related` ) VALUES ( '44','44'); -- ( primary_sel_id, secondary_sel_rel );

  END LOOP the_loop;    
END$$

DELIMITER ;
SSN表的结构为:

CREATE TABLE `ssn` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ssn` varchar(11) DEFAULT NULL,
  `name` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;

可能您的
SELECT
语句没有返回任何行?它正在返回记录,我已分别运行了它。您希望insert语句在什么时候执行?它在“_循环”中,但在光标行的末尾,逻辑是退出“_循环”,这样插入就不会执行。在循环中,如果有返回的行,它应该插入值,否则它将跳出循环是否设置
set autocommit=0初始化中的某个地方?