CURSOR LOOP 中的 tblname 不存在,尽管已声明

问题描述 投票:0回答:0

这是我的第一篇文章,我昨天开始学习MySQL Procedures。 下面的程序代码首先从“sometable”中选择所有相关表,也使用 CURSOR。

想法是将相关的 TABLE_NAMEs 提取到 tblname 中。 在循环中然后我想:SELECT * FROM tblname;

但是 MySQL 说:DB.tblname 不存在。 我错过了什么?

致以诚挚的问候, 乌维

BEGIN
DECLARE done BOOL default false;
DECLARE tblname CHAR(255);
DECLARE curs CURSOR FOR SELECT
    TABLE_NAME
FROM
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
    REFERENCED_TABLE_NAME = 'sometable'
    AND REFERENCED_COLUMN_NAME = 'id';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN curs;
    derloop: LOOP
    fetch curs into tblname;
        if done then
            leave derloop;
        end if;
    SELECT * FROM tblname;
    END LOOP;
CLOSE curs;
END

选择相关的 TABLE_NAMEs 是有效的。

BEGIN
SELECT
    TABLE_NAME
FROM
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
    REFERENCED_TABLE_NAME = 'sometable'
    AND REFERENCED_COLUMN_NAME = 'id';
END

上面的程序正确地显示了相关的表格。

mysql procedure
© www.soinside.com 2019 - 2024. All rights reserved.