仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 704|回复: 7
打印 上一主题 下一主题

[学习教程] 发一篇Mysql分页查询通用存储历程

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
列举选择MySQL的理由的最困难的地方在于,如何对这些理由进行排序。MySQL学习教程这就如同我们经常争论的故事:先有鸡还是先有蛋?前段工夫没有给出SQLServer转到MySQL的通用存储历程,本着共享的精力,为人人贡献这段Mysql分页查询通用存储历程,假定所用数据库为guestbook:
useguestbook;
delimiter$$
dropPRocedureifexistsprc_page_result$$
createprocedureprc_page_result(
incurrpageint,
incolumnsvarchar(500),
intablenamevarchar(500),
insConditionvarchar(500),
inorder_fieldvarchar(100),
inasc_fieldint,
inprimary_fieldvarchar(100),
inpagesizeint
)
begin
declaresTempvarchar(1000);
declaresSqlvarchar(4000);
declaresOrdervarchar(1000);

ifasc_field=1then
setsOrder=concat(orderby,order_field,desc);
setsTemp=<(selectmin;
else
setsOrder=concat(orderby,order_field,asc);
setsTemp=>(selectmax;
endif;

ifcurrpage=1then
ifsConditionthen
setsSql=concat(select,columns,from,tablename,where);
setsSql=concat(sSql,sCondition,sOrder,limit?);
else
setsSql=concat(select,columns,from,tablename,sOrder,limit?);
endif;
else
ifsConditionthen
setsSql=concat(select,columns,from,tablename);
setsSql=concat(sSql,where,sCondition,and,primary_field,sTemp);
setsSql=concat(sSql,(,primary_field,),from(select);
setsSql=concat(sSql,,primary_field,from,tablename,sOrder);
setsSql=concat(sSql,limit,(currpage-1)*pagesize,)astabtemp),sOrder);
setsSql=concat(sSql,limit?);
else
setsSql=concat(select,columns,from,tablename);
setsSql=concat(sSql,where,primary_field,sTemp);
setsSql=concat(sSql,(,primary_field,),from(select);
setsSql=concat(sSql,,primary_field,from,tablename,sOrder);
setsSql=concat(sSql,limit,(currpage-1)*pagesize,)astabtemp),sOrder);
setsSql=concat(sSql,limit?);
endif;
endif;
set@ipageSize=pagesize;
set@sQuery=sSql;
preparestmtfrom@sQuery;
executestmtusing@iPageSize;
end;
$$
delimiter;
能够存储为数据库剧本,然后用命令导进:
mysql-uroot-p<pageResult.sql;
挪用:callprc_page_result(1,"*","Tablename","","columnname",1,"PKID",25);
http://blog.csdn.net/fcrpg2005/archive/2007/03/07/1522713.aspx
关于这个理由我把它放在最后一位。在很多业界专家中有一个相当一致的观点:MySQL不能很好的扩展。关于这点可能有很大的分歧,争论的焦点主要集中于水平可扩展性和垂直可扩展性上。MySQL则更倾向于垂直可扩展性。
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-18 18:58:12 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-27 19:07:42 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
山那边是海 该用户已被删除
地板
发表于 2015-2-5 14:51:26 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
飘灵儿 该用户已被删除
5#
发表于 2015-2-12 09:58:06 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
谁可相欹 该用户已被删除
6#
发表于 2015-3-3 02:45:36 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
再见西城 该用户已被删除
7#
发表于 2015-3-11 09:19:03 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
柔情似水 该用户已被删除
8#
发表于 2015-3-25 13:43:52 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 14:58

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表