【问题标题】:MySQL - Stored Procedure limit issueMySQL - 存储过程限制问题
【发布时间】: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,那么它运行正常。

我该如何解决这个问题?

【问题讨论】:

    标签: mysql stored-procedures


    【解决方案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 给我一个大图 - 你想做什么 - 分页?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2022-01-24
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多