use st;
DELIMITER $$
CREATE PROCEDURE 2in1()
begin
declare bm char(8);
declare found2 boolean default true;
declare bm_ cursor for select table_name from information_schema.tables where table_schema='st' limit 1,15000;
declare continue handler for not found set found2=false;
open bm_;while found2 do
fetch bm_ into bm;
if found=true then
begin
declare rq_ date;
declare found boolean default true;# declare rq_bcf cursor for select distinct(rq) from bm; SET @STMT=CONCAT('declare rq_bcf cursor for select distinct(rq) from ',bm,';');
PREPARE STMT FROM @STMT;
EXECUTE STMT;
# DEALLOCATE PREPARE stmt; open rq_bcf;
while found do
fetch rq_bcf into rq_;
end while;
close rq_bcf;
end;
end if;
end while;
close bm_;
end$$
delimiter ;
运行提示:
ERROR 1324 (42000): Undefined CURSOR: rq_bcf真是没有办法了,请教再请教。
DELIMITER $$
CREATE PROCEDURE 2in1()
begin
declare bm char(8);
declare found2 boolean default true;
declare bm_ cursor for select table_name from information_schema.tables where table_schema='st' limit 1,15000;
declare continue handler for not found set found2=false;
open bm_;while found2 do
fetch bm_ into bm;
if found=true then
begin
declare rq_ date;
declare found boolean default true;# declare rq_bcf cursor for select distinct(rq) from bm; SET @STMT=CONCAT('declare rq_bcf cursor for select distinct(rq) from ',bm,';');
PREPARE STMT FROM @STMT;
EXECUTE STMT;
# DEALLOCATE PREPARE stmt; open rq_bcf;
while found do
fetch rq_bcf into rq_;
end while;
close rq_bcf;
end;
end if;
end while;
close bm_;
end$$
delimiter ;
运行提示:
ERROR 1324 (42000): Undefined CURSOR: rq_bcf真是没有办法了,请教再请教。
解决方案 »
- 加个引号和不加引号我发现区别很多 不明白
- 为了安装配置mysql cluster,在官网找了一堆的包,试了好多了,都不行。这么多类似的包,实在搞不懂哪些是必须的。。。
- mysql concat 函数问题
- 一个简单查询语句!(MySql 下无错误的查询语句,ASP.NET 下报异常!)
- mysql问题!!!急。。。急、、、、、
- MySQL的中文排序问题。
- 问大家一个很菜的问题,mysql -h后面添什么,127.0.0.1还是计算机名
- Mysql数据库触发器执行不成功
- mysql数据库取text类型值的问题
- 求解跨月的日期相差天数的sql语句怎么写呀
- mysql 动态sql
- mysql查询某字段的多条结果显示成按逗号隔开
......
set @asql=concat('create table newttt as select distinct(rq) from ',bm);
PREPARE STMT FROM @asql;
EXECUTE STMT;
.....
上面的问题解决了,不过,对预处理还是没有掌握。在下面的运用中,总是提示错误,已试了ABCD四种方式。
请高手救我。
........open rq_bcf;
while found do
fetch rq_bcf into rq_;
select rq_; /* 监测rq_值 */
if found=true then
begin
declare bpld_ MEDIUMINT;
declare spld_ MEDIUMINT;
declare zxp_ MEDIUMINT;
#select sum(ss) into bpld_ from bm where bs='b';
#select sum(ss) into spld_ from bm where bs='s';
#select sum(ss) into zxp_ from bm where bs='z';select bm,rq_; /* 监测bm,rq_值 */# A:
#set @asql1=concat('select sum(ss) into ',bpld_,' from ',bm,' where bs=b and rq= ',rq_,';');
# PREPARE STMT1 FROM @asql1;
# EXECUTE STMT1;
#set @asql2=concat('select sum(ss) into ',spld_,' from ',bm,' where bs=s and rq= ',rq_,';');
#PREPARE STMT2 FROM @asql2;
# EXECUTE STMT2;
#set @asql3=concat('select sum(ss) into ',zxp_,' from ',bm,' where bs=z and rq= ',rq_,';');
#PREPARE STMT3 FROM @asql3;
# EXECUTE STMT3;
# B:
#set @asql1=concat('select sum(ss) into ? from ',bm,' where bs=b and rq=?;');
#PREPARE STMT1 FROM @asql1;
#set @bpld_=bpld_;
#set @rq_=rq_;
# EXECUTE STMT1 using @bpld_, @rq_;
#set @asql2=concat('select sum(ss) into ? from ',bm,' where bs=s and rq=?;');
#PREPARE STMT2 FROM @asql2;
#set @spld_=spld_;
#set @rq_=rq_;
# EXECUTE STMT2 using @spld_, @rq_;
#set @asql3=concat('select sum(ss) into ? from ',bm,' where bs=z and rq=?;');
#PREPARE STMT3 FROM @asql3;
#set @zxp_=zxp_;
#set @rq_=rq_;
# EXECUTE STMT3 using @zxp_, @rq_;
# C:
#set @asql1=concat('select sum(ss) into ',bpld_,' from ',bm,' where bs=b and rq=?;');
#PREPARE STMT1 FROM @asql1;
#set @rq_=rq_;
# EXECUTE STMT1 using @rq_;
#set @asql2=concat('select sum(ss) into ',spld_,' from ',bm,' where bs=s and rq=?;');
# PREPARE STMT2 FROM @asql2;
#set @rq_=rq_;
# EXECUTE STMT2 using @rq_;
#set @asql3=concat('select sum(ss) into ',zxp_,' from ',bm,' where bs=z and rq=?;');
# PREPARE STMT3 FROM @asql3;
#set @rq_=rq_;
# EXECUTE STMT3 using @rq_;
# D:
set @asql1=concat('select sum(ss) into bpld_ from ',bm,' where bs=b and rq=?;');
PREPARE STMT1 FROM @asql1;
set @rq_=rq_;
EXECUTE STMT1 using @rq_;
set @asql2=concat('select sum(ss) into spld_ from ',bm,' where bs=s and rq=?;');
PREPARE STMT2 FROM @asql2;
set @rq_=rq_;
EXECUTE STMT2 using @rq_;
set @asql3=concat('select sum(ss) into zxp_ from ',bm,' where bs=z and rq=?;');
PREPARE STMT3 FROM @asql3;
set @rq_=rq_;
EXECUTE STMT3 using @rq_;........