获取空值的MySQL游标

获取空值的MySQL游标,mysql,stored-procedures,cursor,Mysql,Stored Procedures,Cursor,从游标获取的数据为空。但是我的查询从项目中选择id返回的行数是正确的。我已在过程循环中放入select语句进行调试。它正在为id返回null。 我遵循了这一点[ 这个代码怎么了 DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `ReportDiffProDiffFinYear`() BEGIN DECLARE id INT; DECLARE sqlstr varchar(10000) default "select finan

从游标获取的数据为空。但是我的查询
从项目中选择id
返回的行数是正确的。我已在过程循环中放入select语句进行调试。它正在为id返回null。 我遵循了这一点[ 这个代码怎么了

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `ReportDiffProDiffFinYear`()
BEGIN

DECLARE id INT;
DECLARE sqlstr varchar(10000) default "select financialYear as 'name' "; 
DECLARE done INT DEFAULT FALSE;
DECLARE cur1 CURSOR FOR select id from Projects; /* My CURSOR QUERY*/
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;


 OPEN cur1;

 read_loop: LOOP
  FETCH cur1 INTO id;
  select id;
  IF done THEN
  LEAVE read_loop;
  END IF;
  set sqlstr = concat(sqlstr, ", sum(if(projects_id=",id,",0,1)) ");
  END LOOP;

  CLOSE cur1;
   set @sqlstr = concat(sqlstr," from (select * from WaterPoints  where status='Waterpoint Complete') as wp, (select id,financialYear from ProjectDetails) as pd where pd.id=wp.projectDetails_id group by  pd.financialYear");

 prepare stmt from @sqlstr;
 execute stmt;
 deallocate prepare stmt;
 END

我认为变量名
id
与游标查询冲突,因此游标查询获取
id
变量的值(null),而不是
projects
表中id的值。请更改变量的名称或使用
projects.id
引用查询中的列