DELIMITER $$
CREATE
FUNCTION `abgent_website`.`test4`()
RETURNS varchar(255)
BEGIN
declare d varchar(50);
declare dd int(20);
declare i int(20);
set i=0;
set d = '';
while (i!=5) do
set dd := (select id from t limit i,1);
set i = i+1;
set d = concat(d,',',dd);
end while;
set d = concat(d,',qq');
return d;
END$$
DELIMITER ;不知为什么,当把i换成真正整数就可以执行成功,那位什么我用变量就不行呢??
CREATE
FUNCTION `abgent_website`.`test4`()
RETURNS varchar(255)
BEGIN
declare d varchar(50);
declare dd int(20);
declare i int(20);
set i=0;
set d = '';
while (i!=5) do
set dd := (select id from t limit i,1);
set i = i+1;
set d = concat(d,',',dd);
end while;
set d = concat(d,',qq');
return d;
END$$
DELIMITER ;不知为什么,当把i换成真正整数就可以执行成功,那位什么我用变量就不行呢??
例如:有一张表叫category,里面有字段id,category_id,name等,category_id就是本身的id值,表中值如下:
id category_id
1 null 是父类
2 null 是父类
3 1 3是1的子类
4 1 4是1的子类
5 3 5是3的子类
6 2 同理如下
7 5
.....
当我传参数值id为1时,我要返回所有他和他子类的id值,即1,3,4,5,7,单用sql写函数怎么写呢?谢谢
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx