|
網誌存檔
熱門網志
|
|
|
前段时间没有给出SQLServer转到Mysql的通用存储过程,本着共享的精神,为大家奉献这段Mysql分页查询通用存储过程,假设所用数据库为guestbook: use guestbook; delimiter $$ drop procedure if exists prc_page_result $$ create procedure prc_page_result ( in currpage int, in columns varchar(500), in tablename varchar(500), in sCondition varchar(500), in order_field varchar(100), in asc_field int, in primary_field varchar(100), in pagesize int ) begin declare sTemp varchar(1000); declare sSql varchar(4000); declare sOrder varchar(1000); set sOrder = concat(` order by `, order_field); if asc_field = 1 then set sTemp = `<(select min`; else set sTemp = `>(select max`; end if; if currpage = 0 then if sCondition <> `` then set sSql = concat(`select `, columns, ` from `, tablename, ` where `); set sSql = concat(sSql, sCondition, sOrder, ` limit ?`); else set sSql = concat(`select `, columns, ` from `, tablename, sOrder, ` limit ?`); end if; else if sCondition <> `` then set sSql = concat(`select `, columns, ` from `, tablename); set sSql = concat(sSql, ` where `, sCondition, ` and `, primary_field, sTemp); set sSql = concat(sSql, `( private_key )`, ` from (select `); set sSql = concat(sSql, ` `, primary_field, ` as private_key from `, tablename,` where `,sCondition, sOrder); set sSql = concat(sSql, ` limit `, (currpage-1)*pagesize,`,`,pagesize, `) as tabtemp)`, sOrder); set sSql = concat(sSql, ` limit ?`); else set sSql = concat(`select `, columns, ` from `, tablename); set sSql = concat(sSql, ` where `, primary_field, sTemp); set sSql = concat(sSql, `(`, primary_field, `)`, ` from (select `); set sSql = concat(sSql, ` `, primary_field, ` as private_key from `, tablename, sOrder); set sSql = concat(sSql, ` limit `, (currpage-1)*pagesize,`,`,pagesize, `) as tabtemp)`, sOrder); set sSql = concat(sSql, ` limit ?`); end if; end if; set @iPageSize = pagesize; set @sQuery = sSql; prepare stmt from @sQuery; execute stmt using @iPageSize; end; $$ delimiter;可以存储为数据库脚本,然后用命令导入: mysql -u root -p < pageResult.sql; 调用:call prc_page_result(1, "*", "Tablename", "", "columnname", 1, "PKID", 25); |
-------------------------------------------------
| 上一篇:Refactoring Tools | 下一篇:细谈软件需求分析过程 |
Strong Yuan 2007-07-05
36 set sSql = concat(sSql, `( private_key )`, ` from (select `);37 set sSql = concat(sSql, ` `, primary_field, ` as private_key from `, tablename,` where `,sCondition, sOrder);38 set sSql = concat(sSql, ` limit `,(curr |
Strong Yuan 2007-06-19
可以修改 currpage 的程序,可以設置第一頁爲 0 或者爲 1 |


