由于我以前使用的是sql server数据库,现在公司用的是mysql数据库,因为做项目的查询语句比较复杂所以虚要用到存储过程分页,因为我是新会员就没分给大家了,实在抱歉,希望大家可以让我分享到你的学识,谢谢

解决方案 »

  1.   

    DELIMITER $$;DROP PROCEDURE IF EXISTS `mytest`.`MyPage`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `MyPage`(
    tableName varchar(100),  /*表名*/
    fieldsName VARCHAR(100), /*显示字段*/
    pageIndex int,           /*页索引*/
    pageSize int,            /*每页大小*/
    sortName VARCHAR(500),   /*排序字段*/
    strWhere varchar(500)    /*条件*/
    )
    BEGIN
    DECLARE fieldlist VARCHAR(200);
    if fieldsName=''||fieldsName=null THEN
       set fieldlist='*';
    else
       set fieldlist=fieldsName;
    end if;
    if strWhere=''||strWhere=null then
         if sortName=''||sortName=null then
             set @strSQL=concat('select ',fieldlist,' from ' , tableName,' limit ',(pageindex-1)*pageSize,',',pageSize);
         else
     set @strSQL=concat('select ',fieldlist,' from ' , tableName,' order by ',sortName,' limit ',(pageindex-1)*pageSize,',',pageSize);
         end if;
    else
        if sortName=''||sortName=null then
    set @strSQL=concat('select ',fieldlist,' from ' , tableName,' where ',strWhere,' limit ',(pageindex-1)*pageSize,',',pageSize);
        else
    set @strSQL=concat('select ',fieldlist,' from ' , tableName,' where ',strWhere,' order by ',sortName,' limit ',(pageindex-1)*pageSize,',',pageSize);
        end if;
    end if;
    PREPARE stmt1 FROM @strSQL;
    EXECUTE stmt1;
    DEALLOCATE PREPARE stmt1;
    END$$DELIMITER ;$$