存储过程变量赋值不灵了?

fnzh001 2010-08-05 12:09:27
我的存储过程如下:
delimiter $$
create procedure sCode ()
begin
declare icode varchar(10);
declare cur_sCode cursor for (select symbol from quote group by symbol);
declare exit HANDLER for not found close cur_sCode;
open cur_sCode ;
repeat
fetch cur_sCode into icode;
create table icode (select * from quote where symbol=icode order by date desc);
until 0 end repeat;
close cur_sCode;
end;
$$
注意, create table icode (select * from quote where symbol=icode order by date desc);
这句话的意图是创建表,表名是变化的,icode取不同的值,创建不同的表,为何这个存储过程执行后,出现这样的问题
仅仅创建了一个表,表名就是icode?但是select * from quote where symbol=icode order by date desc这句话,执行的时候,确将icode的值正确赋值给了symbol,没有将icode这个字符串赋值给symbol,为何 create table icode没有将icode对应的值付给table名称,而是将icode赋值给table??
...全文
143 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixianxxx 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fnzh001 的回复:]
我自己通过测试解决了,
delimiter $$
create procedure sCode ()
begin
declare icode varchar(10);
declare cur_sCode cursor for (select symbol from quote group by symbol);
declare exit HANDLER for not ……
[/Quote]

拼接的时候处理单引号

delimiter $$
create procedure sCode ()
begin
declare icode varchar(10);
declare cur_sCode cursor for (select symbol from quote group by symbol);
declare exit HANDLER for not found close cur_sCode;
open cur_sCode ;
repeat
fetch cur_sCode into icode;
set @sql = concat('create table ',icode,'( select * from quote where symbol=''',icode,''' order by date desc);');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1 ;
DEALLOCATE PREPARE stmt1;
until 0 end repeat;
close cur_sCode;
end;
$$
feixianxxx 2010-08-05
  • 打赏
  • 举报
回复
这个需要动态执行

否则的话 它不会吧icode当真变量的
fnzh001 2010-08-05
  • 打赏
  • 举报
回复
我自己通过测试解决了,
delimiter $$
create procedure sCode ()
begin
declare icode varchar(10);
declare cur_sCode cursor for (select symbol from quote group by symbol);
declare exit HANDLER for not found close cur_sCode;
open cur_sCode ;
repeat
fetch cur_sCode into icode;
set @sql = concat('create table ',icode,'( select * from quote where symbol=',''',icode,''',' order by date desc);');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1 ;
DEALLOCATE PREPARE stmt1;
until 0 end repeat;
close cur_sCode;
end;
$$
ACMAIN_CHM 2010-08-05
  • 打赏
  • 举报
回复
ACMAIN_CHM 2010-08-05
  • 打赏
  • 举报
回复
delimiter $$
create procedure sCode ()
begin
declare icode varchar(10);
declare cur_sCode cursor for (select symbol from quote group by symbol);
declare exit HANDLER for not found close cur_sCode;
open cur_sCode ;
repeat
fetch cur_sCode into icode;
set @sql = concat('create table ',icode,' select * from quote where symbol=',icode,' order by date desc');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1 ;
DEALLOCATE PREPARE stmt1;
until 0 end repeat;
close cur_sCode;
end;
$$
fnzh001 2010-08-05
  • 打赏
  • 举报
回复
mysql> call sCode();
ERROR 1054 (42S22): Unknown column 'AACC' in 'where clause'
这个小毛病如何解决?
fnzh001 2010-08-05
  • 打赏
  • 举报
回复
估计问题出现在这里,已经重新改写,还是不行
1. set @sql = concat('create table ',icode,'( select * from quote where symbol=',''',icode,''',' order by date desc);');
可以运行,产生了新的表名,但是每个表都是空的
2.set @sql = concat('create table ',icode,'( select * from quote where symbol='',icode,''order by date desc);');
可以运行,产生了新的表名,但是每个表都是空的
请问,如何处理?
fnzh001 2010-08-05
  • 打赏
  • 举报
回复
有问题,问题很大,打开所有的表发现都是空的。
下载代码方式:https://pan.quark.cn/s/054d920fa1d1 《学生博客信息管理系统详解》 学生博客信息管理系统是一款针对教育环境而设计的简化博客平台,其主要目的在于协助教师进行学生博客信息的监控与管理,并对学生的作业得分进行记录。该系统具备方便的查询和访问特性,能够显著提升教学活动中的信息传递效率,并且为学生构建了一个展示个人能力、交流知识的平台。 1. **系统架构** 学生博客信息管理系统大概采用了常规的三层架构,涵盖了表现层(用户交互界面)、业务逻辑层(负责业务规则的执行)以及数据访问层(负责与数据库进行数据交换)。此类架构有利于代码的规范化管理与维护,有助于提升系统的可扩展性与代码复用率。 2. **功能模块** - **用户管理**:包含注册、登录、个人资料维护等功能,旨在保障用户能够安全地使用系统。 - **博客发布**:学生能够建立、修改和移除自己的博客文章,内容形式支持文本、图片、链接等多样化展示。 - **博客查询**:用户可根据关键词、作者等条件进行检索,以快速定位所需的博客内容。 - **作业评分**:教师可以检视学生的作业,实施评分与评语,系统将自动计算每次作业的平均分数与总得分。 - **统计分析**:系统提供数据统计功能,例如学生作业成绩的分布情况、活跃度最高的博主排行等,为教学决策提供数据依据。 3. **技术选型** 从提供的文件"博客管理.jar"可以推断,该系统可能基于Java语言开发,因为.jar是Java程序的可执行文件格式。同时,"博客管理_lib"可能包含了系统运行所需的第三方库资源,这些库资源或许包含了Spring框架、Hibernate用于数据持久化处理,或MyBatis用于数据库交互,...

57,062

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧