Stored procedures 用于检索表缺少的自动增量ID的MySQL过程?

Stored procedures 用于检索表缺少的自动增量ID的MySQL过程?,stored-procedures,mysql-5.5,Stored Procedures,Mysql 5.5,我创建了一个过程来从表中查找缺少的id,但它不会检索任何结果,下面是该过程 DELIMITER || DROP PROCEDURE IF EXISTS proc_rpt || CREATE PROCEDURE proc_rpt() BEGIN SET @minID = (SELECT MIN(`id`) FROM `tbl_film` WHERE `user_id`=13); SET @maxID = (SELECT MAX(`id`) FROM `tbl_film` WHERE `user_

我创建了一个过程来从表中查找缺少的id,但它不会检索任何结果,下面是该过程

DELIMITER ||
DROP PROCEDURE IF EXISTS proc_rpt ||
CREATE PROCEDURE proc_rpt()
BEGIN 
SET @minID = (SELECT MIN(`id`) FROM `tbl_film` WHERE `user_id`=13);
SET @maxID = (SELECT MAX(`id`) FROM `tbl_film` WHERE `user_id`=13);
REPEAT 
    SET @tableID = (SELECT `id` FROM `tbl_film` WHERE `id` = @minID);
    IF (@tableID IS NULL) THEN
        INSERT INTO temp_missing(`missing_id`) VALUES (@tableID);
    END IF;
    SET @minID = @minID + 1; 
UNTIL (@minID <= @maxID)
END REPEAT;  // earlier I was missing this line which was giving error in Procedure.
END; ||

但是没有关于tbl_缺失的结果,而我可以看到在
tbl_film
中有许多
film_id
的缺失值。有人能告诉我我做错了什么吗?

试试这段代码

DELIMITER ||
    DROP PROCEDURE IF EXISTS proc_rpt ||
    CREATE PROCEDURE proc_rpt()
    BEGIN 
    DECLARE maxId int;
    DECLARE minId int;
    DECLARE curId int;
        SELECT MIN(`id`) INTO maxId FROM `tbl_film` WHERE `user_id`=13;
        SELECT MAX(`id`) INTO minId FROM  `tbl_film` WHERE `user_id`=13;
    REPEAT 
        SELECT `id` INTO curId FROM `tbl_film` WHERE `id` = @minID);
        IF (curId IS NULL) THEN
            INSERT INTO temp_missing(`missing_id`) VALUES (curId);
        END IF;
        SET minId = minId + 1; 
    UNTIL (minId <= maxId)
    END REPEAT;  // earlier I was missing this line which was giving error in Procedure.
    END; ||
分隔符||
如果存在过程,则删除过程||
创建过程proc_rpt()
开始
声明maxId int;
声明minId int;
声明curId int;
从'tbl_film'中选择MIN('id')进入maxId,其中'user_id`=13;
从'tbl_film'中选择MAX('id')进入minId,其中'user_id`=13;
重复
从'tbl_film'中选择'id'进入curId,其中'id'=@minID);
如果(curId为NULL),则
插入temp_missing(`missing_id`)值(curId);
如果结束;
设置minId=minId+1;
直到(分钟)
DELIMITER ||
    DROP PROCEDURE IF EXISTS proc_rpt ||
    CREATE PROCEDURE proc_rpt()
    BEGIN 
    DECLARE maxId int;
    DECLARE minId int;
    DECLARE curId int;
        SELECT MIN(`id`) INTO maxId FROM `tbl_film` WHERE `user_id`=13;
        SELECT MAX(`id`) INTO minId FROM  `tbl_film` WHERE `user_id`=13;
    REPEAT 
        SELECT `id` INTO curId FROM `tbl_film` WHERE `id` = @minID);
        IF (curId IS NULL) THEN
            INSERT INTO temp_missing(`missing_id`) VALUES (curId);
        END IF;
        SET minId = minId + 1; 
    UNTIL (minId <= maxId)
    END REPEAT;  // earlier I was missing this line which was giving error in Procedure.
    END; ||