下面简单的存储过程,
delimiter //
drop procedure ranking;//
create procedure ranking(selectID varchar(300))
begin
--问题在这里这个临时表创建完成后只加进去一条数据,dindon 表里明明是三条啊
create temporary table tmpSelect select id,name_fr,name_en from dindon where id in(selectID);
--下面是结果
select id,name_fr,name_en from tmpSelect;
drop table tmpSelect;
end;//
delimiter ;
call ranking('1,2,3'); --如果单独运行是没错,能加进去三条,太奇怪了??请高手指教
create temporary table tmpSelect select id,name_fr,name_en from dindon where id in('1,2,3');
delimiter //
drop procedure ranking;//
create procedure ranking(selectID varchar(300))
begin
--问题在这里这个临时表创建完成后只加进去一条数据,dindon 表里明明是三条啊
create temporary table tmpSelect select id,name_fr,name_en from dindon where id in(selectID);
--下面是结果
select id,name_fr,name_en from tmpSelect;
drop table tmpSelect;
end;//
delimiter ;
call ranking('1,2,3'); --如果单独运行是没错,能加进去三条,太奇怪了??请高手指教
create temporary table tmpSelect select id,name_fr,name_en from dindon where id in('1,2,3');
解决方案 »
- 关于MYSQL 死锁的问题 Deadlock found when trying to get lock; try restarting ..........
- mysql 语句有错误...求帮忙
- 触发器插入其它表中无法插入NULL空值报错。
- mysql数据库,一个名为test的数据库中可否将有的表设置为InnoDB,有的表设置为MyISAM
- 请问下面这条sql语句的含义
- windows下如何实现mysql自动备份
- 如何处理mysql元组重复问题(不用id)
- 请问一个简单的查询怎么写?
- 谢谢各位了,谁了mysql的函数使用帮助啊?哪里能有下载,我急需要一份。
- MYSQL出现High Severity Error
- mysql中文排序问题
- postgres历史记录占满了硬空间清理问题
or
in(1,2,3)
delimiter //
drop procedure ranking;//
create procedure ranking(selectID varchar(300))
begin
--问题在这里这个临时表创建完成后只加进去一条数据,dindon 表里明明是三条啊
set @concatID = concat("'", replace(selectID, ",", "','"), "'");
select @concatID;
create temporary table tmpSelect select id,name_fr,name_en from dindon where id in(selectID);
--下面是结果
select id,name_fr,name_en from tmpSelect;
drop table tmpSelect;
end;//
delimiter ;
call ranking('1,2,3');
delimiter //
drop procedure ranking;//
create procedure ranking(selectID varchar(300))
begin
--问题在这里这个临时表创建完成后只加进去一条数据,dindon 表里明明是三条啊
create temporary table tmpSelect select id,name_fr,name_en from dindon where id in(selectID);
--下面是结果
select id,name_fr,name_en from tmpSelect;
drop table tmpSelect;
end;//
delimiter ;
call ranking(“'1','2','3'");
这样成空的了,一条都没有,
奇怪的是如果不在存储过程里就可以,一点问题都没有!
prepare s1 from @st;
execute s1;
select @st;
CREATE DEFINER=`root`@`localhost` PROCEDURE `try`(dd varchar(300))
BEGIN
set @st = concat('create temporary table tmp Select id from aa where id in(',replace(dd,"'",""),')');
prepare s1 from @st;
execute s1;
select @st;
END$$