请帮忙看一下为什么会报错,小弟首次编写这种类型的存储过程:
delimiter $$
create procedure mydb()
begin
declare dbname varchar(50);
declare stop int default 0;
declare cur cursor for (select name from name); //name表中存放的是数据库的名称
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop = null;
open cur;
fetch cur into dbname; //遍历数据库的名称
while ( dbname is not null) do
begin
declare name varchar(200);
declare stop1 int default 0;
declare cur1 cursor for (select prounit_name from dbname.prounit); //获取prounit表中prounit_name字段内容
declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop1 = null;
open cur1;
fetch cur1 into name;
while ( stop1 is not null) do
update prounit set name='abc';
fetch cur1 into name;
end while;
close cur1;
end ;
fetch cur into dbname;
end while;
close cur;
end $$
delimiter;
在执行存储过程error:ERROR 1146 (42S02): Table 'dbname.prounit' doesn't exist
why?????
需求是:数据库中存在多个库,每个库中存在相同的一张表,需要对该表中的某个字段进行修改.库的数量很大.首先需要将所有的库名存放在name表里,游标遍历该库名,外层循环.内层循环是根据库名.表名查询相关的变量放到另外一个游标中.再次遍历该游标,执行更新操作.(更新操作中会用到外层循环的库名和内层循环的变量名.)---->代码中的update,我是随便写的.但是在执行的是有一直报没有'dbname.prounit' doesn't exist!
谢谢