Concat是一个动态的sql查询

时间:2013-05-20 20:11:57

标签: mysql mysql-workbench

我正在迈出开发动态SQL查询的第一步,我对论坛提出了一个问题。连接的select语句是否可以附加其他连接语句(参见下面的代码)?

use test;
drop procedure if exists test.spds;
delimiter $$
create procedure test.spds (
xage varchar(75),
xgender varchar(2),
xquery varchar(254))
begin
set @xan:= REPLACE(xage,'''','');
set @xgn:= REPLACE(xgender,'''','');

set xquery:=concat('select count(*) from test.ratings where quota=1')

if @xan is not null then
xquery:=xquery concat(' and age in (',@xan,')')

if @xgn is not null then
 xquery:=xquery concat(' and gender = ',@xgn,')

end if;

xquery=xquery concat(';');

prepare x1 from xquery;
execute x1;
deallocate prepare x1;

end if;
end $$

这是我的第一次尝试,所以也许我过于简单地接近这一点,任何指导/建议都会受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

是的,你可以试试这个

if @xan is not null then
   set xquery:=CONCAT(xquery, ' and age in (',@xan,')');
end if