这是我的第一篇文章,我昨天开始学习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
上面的程序正确地显示了相关的表格。