mysql 存储过程写分页程序

/*分页程序*/

delimiter //

drop procedure if exists sp_page;

create procedure sp_page(

 p_table_name varchar(1024),

 p_fields varchar(1024),

 p_page_size int,

 p_curr_page int,

 p_order_string varchar(256),

 p_where_string varchar(1024),

 out p_total_rows int

 )

 

 not deterministic

 sql security definer

 comment '分页存储过程'

 

 begin

 

   /*变量的申明*/

   declare v_start_row int default 0;

   declare v_limit_string varchar(256);

 

  /*给变量赋值*/

  if p_curr_page<1 then

    set p_curr_page = 1;

  end if;

 

  set @rows_total = 0;

  set v_start_row = (p_curr_page-1)*p_page_size;

  set v_limit_string = concat(' limit ',v_start_row,',',p_page_size);

 

  set @total_string = concat('select count(*) into @rows_total from ',p_table_name,' ',p_where_string);

  set @query_string = concat('select ',p_fields,' from ',p_table_name,' ',p_where_string,' ',

  p_order_string,' ',v_limit_string);

 

  select @total_string;

  select @query_string;

 

  /*预处理*/

  prepare stmt_count from @total_string;

  execute stmt_count;

  deallocate  prepare stmt_count;

 

  set p_total_rows= @rows_total;

 

  prepare stmt_query from @query_string;

  execute stmt_query;

  deallocate prepare stmt_query;

 

 

  end;//

 

 

调用存储过程

 

参数含义

表的名字 要查询的字段  每页显示的记录数  当前的页码  总记录数

call sp_page('t_score','*',10,1,'','', @total_rows)//

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值