MySQL - 存储过程限制问题
Posted
技术标签:
【中文标题】MySQL - 存储过程限制问题【英文标题】:MySQL - Stored Procedure limit issue 【发布时间】:2011-06-16 10:53:52 【问题描述】:我在mysql的SQLYog中写了一个存储过程如下,
分隔符 $$
如果存在则删除程序
test
.spUser
$$创建过程
test
.spUser
(IN start1 INT,IN 限制1 INT)BEGIN
select gi.id,gi.user_id,concat(concat(first_name,' '),last_name) as full_name from generic as gi, profile as p where gi.user_id=p.user_id limit start1,limit1;
END$$
分隔符;
如果我写了上面的代码,那么它会抛出错误号。 1064,如果我将limit start1,limit1替换为limit 5,10,那么它运行正常。
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:drop procedure if exists list_users;
delimiter #
create procedure list_users()
begin
set SQL_SELECT_LIMIT = 1;
select * from users;
set SQL_SELECT_LIMIT = DEFAULT;
end#
delimiter ;
select * from users;
+---------+----------+
| user_id | username |
+---------+----------+
| 3 | alpha |
| 2 | bar |
| 4 | beta |
| 1 | f00 |
+---------+----------+
4 rows in set (0.00 sec)
call list_users();
+---------+----------+
| user_id | username |
+---------+----------+
| 3 | alpha |
+---------+----------+
1 row in set (0.00 sec)
【讨论】:
SQL_SELECT_LIMIT 这个变量定义了 LIMIT。但是记录的起点呢? @Ozz 给我一个大图 - 你想做什么 - 分页?以上是关于MySQL - 存储过程限制问题的主要内容,如果未能解决你的问题,请参考以下文章