DROP PROCEDURE IF EXISTS Cursor_Test;# MySQL returned an empty result set (i.e. zero rows).
# MySQL returned an empty result set (i.e. zero rows).
DELIMITER $$
CREATE PROCEDURE Cursor_Test()
BEGIN
DECLARE Project_Number_val VARCHAR( 255 );
DECLARE Temp_List_val VARCHAR(255);
DECLARE Project_List_val VARCHAR(255);
DECLARE FoundCount INT;
DECLARE no_more_rows BOOLEAN;
DECLARE loop_cntr INT DEFAULT 0;
DECLARE num_rows INT DEFAULT 0;
DECLARE projects_cur CURSOR FOR
SELECT Project_Id
FROM Project_Details;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_rows = TRUE;
OPEN projects_cur;
select FOUND_ROWS() into num_rows;
the_loop: LOOP
FETCH projects_cur
INTO Project_Number_val;
IF no_more_rows THEN
CLOSE projects_cur;
LEAVE the_loop;
END IF;
SET @Project_List_val = CONCAT(Project_Number_val, '_List');
SET @sql1 = CONCAT('SELECT COUNT(1) INTO FoundCount
FROM information_schema.tables
WHERE table_schema = panel_rs
AND table_name =', @Project_List_val);
PREPARE stmt FROM @sql1;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
IF FoundCount = 1 THEN
SET @sql = CONCAT(' INSERT INTO test (Panel_Id)
SELECT Panel_Id
FROM ', @Project_List_val);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
SET loop_cntr = loop_cntr + 1;
END LOOP the_loop;
select num_rows, loop_cntr;
END $$# MySQL returned an empty result set (i.e. zero rows).
# MySQL returned an empty result set (i.e. zero rows).
DELIMITER
# MySQL returned an empty result set (i.e. zero rows).
为了检查sql1中上述查询中存在的表,在运行查询时,不会使用该值更新FoundCount变量。
你能建议在运行查询时如何更新变量吗?
或者有没有办法检查表存在并根据表存在的结果运行第二个查询