<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_无意</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/27243/rss</id><updated>2011-11-18T03:07:17Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/27243/rss"/><entry><id>http://www.cnblogs.com/wuyisky/archive/2011/11/18/mingzhuxiaoshuo.html</id><title type="text">名著小说在线阅读</title><summary type="text">名著小说在线阅读外国名著 外国文学麦田里的守望者第26节杰罗姆&amp;#183;大卫&amp;#183;塞林格11月17日连载中钢铁是怎样炼成的第九章尼古拉&amp;#183;奥斯特洛夫斯基11月17日全书完战争与和平第二十五章列夫&amp;#183;托尔斯泰11月17日全书完茶花女第27节小仲马11月17日全书完巴黎圣母院第十卷七　夏托佩尔援救来了！维克多&amp;#183;雨果11月15日全书完老人与海老人与海4海明威11月15日全书完十日谈薄伽丘11月15日全书完傲慢与偏见第二十二章简&amp;#183;奥斯汀11月11日全书完鲁宾逊漂流记第十章丹尼尔&amp;#183;笛福11月7日全书完简&amp;#183;爱第三十八章夏洛蒂&amp;#183;勃朗特</summary><published>2011-11-18T03:07:00Z</published><updated>2011-11-18T03:07:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2011/11/18/mingzhuxiaoshuo.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2011/11/18/mingzhuxiaoshuo.html"/><content type="html">&lt;p&gt;名著小说在线阅读&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;外国名著 外国文学&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;table style="width: 100%;" border="1" cellspacing="0" cellpadding="0" align="center"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="麦田里的守望者" href="http://www.mingzhuxiaoshuo.com/waiguo/26/12/MaiTian.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;麦田里的守望者&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&lt;a  title="第26节" href="http://www.mingzhuxiaoshuo.com/Contents.Asp?ID=793" target="_blank"&gt;第26节&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=杰罗姆&amp;middot;大卫&amp;middot;塞林格"&gt;杰罗姆&amp;middot;大卫&amp;middot;塞林格&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月17日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;连载中&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="钢铁是怎样炼成的" href="http://www.mingzhuxiaoshuo.com/waiguo/26/27/gangtie.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;钢铁是怎样炼成的&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&lt;a  title="第九章" href="http://www.mingzhuxiaoshuo.com/Contents.Asp?ID=935" target="_blank"&gt;第九章&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=尼古拉&amp;middot;奥斯特洛夫斯基"&gt;尼古拉&amp;middot;奥斯特洛夫斯基&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月17日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;全书完&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="战争与和平" href="http://www.mingzhuxiaoshuo.com/waiguo/26/26/ZhanZhengYuHePing.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;战争与和平&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&lt;a  title="第二十五章" href="http://www.mingzhuxiaoshuo.com/Contents.Asp?ID=917" target="_blank"&gt;第二十五章&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=列夫&amp;middot;托尔斯泰"&gt;列夫&amp;middot;托尔斯泰&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月17日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;全书完&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="茶花女" href="http://www.mingzhuxiaoshuo.com/waiguo/26/29/ChaHuaNv.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;茶花女&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&lt;a  title="第27节" href="http://www.mingzhuxiaoshuo.com/Contents.Asp?ID=892" target="_blank"&gt;第27节&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=小仲马"&gt;小仲马&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月17日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;全书完&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="巴黎圣母院" href="http://www.mingzhuxiaoshuo.com/waiguo/26/16/BaLiShengMuYuan.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;巴黎圣母院&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&lt;a  title="第十卷七　夏托佩尔援救来了！" href="http://www.mingzhuxiaoshuo.com/Contents.Asp?ID=763" target="_blank"&gt;第十卷七　夏托佩尔援救来了！&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=维克多&amp;middot;雨果"&gt;维克多&amp;middot;雨果&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月15日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;全书完&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="老人与海" href="http://www.mingzhuxiaoshuo.com/waiguo/26/15/LaoRenYuHai.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;老人与海&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&lt;a  title="老人与海4" href="http://www.mingzhuxiaoshuo.com/Contents.Asp?ID=709" target="_blank"&gt;老人与海4&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=海明威"&gt;海明威&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月15日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;全书完&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="十日谈" href="http://www.mingzhuxiaoshuo.com/waiguo/26/28/ShiRiTan.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;十日谈&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=薄伽丘"&gt;薄伽丘&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月15日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;全书完&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="傲慢与偏见" href="http://www.mingzhuxiaoshuo.com/waiguo/26/8/AoManYuPianJian.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;傲慢与偏见&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&lt;a  title="第二十二章" href="http://www.mingzhuxiaoshuo.com/Contents.Asp?ID=437" target="_blank"&gt;第二十二章&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=简&amp;middot;奥斯汀"&gt;简&amp;middot;奥斯汀&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月11日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;全书完&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="鲁宾逊漂流记" href="http://www.mingzhuxiaoshuo.com/waiguo/26/13/LuBinXunPiaoLiuJi.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;鲁宾逊漂流记&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&lt;a  title="第十章" href="http://www.mingzhuxiaoshuo.com/Contents.Asp?ID=323" target="_blank"&gt;第十章&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=丹尼尔&amp;middot;笛福"&gt;丹尼尔&amp;middot;笛福&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月7日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;全书完&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  title="简&amp;middot;爱" href="http://www.mingzhuxiaoshuo.com/waiguo/26/14/JianAi.Html" target="_blank"&gt;&lt;span style="color: #006699;"&gt;简&amp;middot;爱&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td&gt;&lt;a  title="第三十八章" href="http://www.mingzhuxiaoshuo.com/Contents.Asp?ID=314" target="_blank"&gt;第三十八章&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;&lt;a  href="http://www.mingzhuxiaoshuo.com/search.asp?S=夏洛蒂&amp;middot;勃朗特"&gt;夏洛蒂&amp;middot;勃朗特&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;11月7日&lt;/td&gt;&#xD;
&lt;td align="middle"&gt;全书完&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;strong&gt;〖 麦田里的守望者内容简介〗&lt;/strong&gt;&lt;br /&gt;《麦田里的守望者》是美国作家杰罗姆&amp;middot;大卫&amp;middot;塞林格唯一的一部长篇小说，塞林格将故事的起止局限于16岁的中学生尔顿&amp;middot;考尔菲德从离开学校到曼哈顿游荡的三天时间内，并借鉴了意识流天马行空的写作方法，充分探索了一个十几岁少年的内心世界。愤怒与焦虑是此书的两大主题，主人公的经历和思想在青少年中引起强烈共鸣，受到读者，特别是大中学生的热烈欢迎。《纽约时报》的书评写道：在美国，阅读《麦田里的守望者》就像毕业要获得导师的首肯一样重要。其后，《麦田里的守望者》直接影响了一类小说的创作。&lt;br /&gt;&lt;strong&gt;〖 傲慢与偏见内容简介〗&lt;/strong&gt;&lt;br /&gt;《傲慢与偏见》是简&amp;middot;奥斯汀的代表作。这部作品以日常生活为素材，一反当时社会上流行的感伤小说的内容和矫揉造作的写作方法，生动地反映了18世纪末到19世纪初处于保守和闭塞状态下的英国乡镇生活和世态人情。这部社会风情画式的小说不仅在当时吸引着广大的读者，时至今日，仍给读者以独特的艺术享受。&lt;/p&gt;&#xD;
&lt;p&gt;名著小说在线阅读&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;外国名著 外国文学&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/2253740.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2011/11/18/mingzhuxiaoshuo.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wuyisky/archive/2011/06/22/tianqihoubao.html</id><title type="text">历史天气查询</title><summary type="text">上海历史天气查询北京历史天气查询广州历史天气查询南京历史天气查询更多历史天气查询 天气后报 http://www.tianqihoubao.com 全国主要城市、县历史天气预报在线查询本站目前可以查询涵盖 34 个省、市所属的 2290 个城市、县、地区历史天气预报信息，主要指标包括每天最高气温、最低气温、天气状况、风向等。安徽澳门北京福建甘肃广东广西贵州海南河北河南黑龙江湖北湖南吉林江苏江西辽宁内蒙古宁夏青海山东山西陕西上海四川台湾天津西藏香港新疆云南浙江重庆</summary><published>2011-06-22T09:01:00Z</published><updated>2011-06-22T09:01:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2011/06/22/tianqihoubao.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2011/06/22/tianqihoubao.html"/><content type="html">&lt;p&gt;上海历史天气查询&lt;/p&gt;&#xD;
&lt;p&gt;北京历史天气查询&lt;/p&gt;&#xD;
&lt;p&gt;广州历史天气查询&lt;/p&gt;&#xD;
&lt;p&gt;南京历史天气查询&lt;/p&gt;&#xD;
&lt;p&gt;更多历史天气查询&amp;nbsp; &lt;strong&gt;&lt;a href="http://www.tianqihoubao.com"&gt;天气后报&lt;/a&gt;&lt;/strong&gt; &lt;a href="http://www.tianqihoubao.com"&gt;http://www.tianqihoubao.com&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;全国主要城市、县历史天气预报在线查询&lt;/b&gt;&lt;/p&gt;&#xD;
&lt;table align="center" width="420" border="0"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td align="left"&gt;本站目前可以查询涵盖 34 个省、市所属的 2290 个城市、县、地区历史天气预报信息，主要指标包括每天最高气温、最低气温、天气状况、风向等。&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;table width="410" cellpadding="1" bordercolordark="#ffffff" bordercolorlight="#008000" cellspacing="0" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;安徽&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;澳门&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;北京&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;福建&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;甘肃&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;广东&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;广西&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;贵州&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;海南&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;河北&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;河南&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;黑龙江&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;湖北&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;湖南&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;吉林&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;江苏&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;江西&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;辽宁&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;内蒙古&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;宁夏&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;青海&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;山东&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;山西&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;陕西&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;上海&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;四川&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;台湾&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;天津&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;西藏&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;td style="height: 22px;"&gt;&lt;a href="http://www.tianqihoubao.com"&gt;香港&lt;/a&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td  style="height: 22px;"&gt;新疆&lt;/td&gt;&#xD;
&lt;td  style="height: 22px;"&gt;云南&lt;/td&gt;&#xD;
&lt;td  style="height: 22px;"&gt;浙江&lt;/td&gt;&#xD;
&lt;td  style="height: 22px;"&gt;重庆&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/2087369.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2011/06/22/tianqihoubao.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wuyisky/archive/2011/03/24/1994333.html</id><title type="text">oracle分区表之交换分区 altertable exchange partition with table</title><summary type="text">Exchange partition提供了一种方式，让你在表与表或分区与分区之间迁移数据，注意不是将表转换成分区或非分区的形式，而仅只是迁移表中数据(互相迁移)，由于其号称是采用了更改数据字典的方式，因此效率最高(几乎不涉及io操作)。Exchange partition适用于所有分区格式，你可以将数据从分区表迁移到非分区表，也可以从非分区表迁移至分区表，或者从hash partition到range partition诸如此类吧。 其语法很简单：alter table tbname1 exchangepartition/subpartition ptname with table tbnam</summary><published>2011-03-24T13:36:00Z</published><updated>2011-03-24T13:36:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2011/03/24/1994333.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2011/03/24/1994333.html"/><content type="html">&lt;p&gt;Exchange partition提供了一种方式，让你在表与表或分区与分区之间迁&lt;/p&gt;&#xD;
&lt;p&gt;移数据，注意不是将表转换成分区或非分区的形式，而仅只是迁移表中数&lt;/p&gt;&#xD;
&lt;p&gt;据(互相迁移)，由于其号称是采用了更改数据字典的方式，因此效率最高(&lt;/p&gt;&#xD;
&lt;p&gt;几乎不涉及io操作)。Exchange partition适用于所有分区格式，你可以将&lt;/p&gt;&#xD;
&lt;p&gt;数据从分区表迁移到非分区表，也可以从非分区表迁移至分区表，或者从&lt;/p&gt;&#xD;
&lt;p&gt;hash partition到range partition诸如此类吧。&lt;/p&gt;&#xD;
&lt;p&gt;其语法很简单：alter table tbname1 exchange&lt;/p&gt;&#xD;
&lt;p&gt;partition/subpartition ptname with table tbname2;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注意：在将未分区表的数据迁移到分区表中时，可能出现ora-14099的错误，虽然可以用without validation去解决，但是此时进入分区表的数据可能不符合分区规则。所以without validation一定要慎用。&lt;/p&gt;&#xD;
&lt;p&gt;l 涉及交换的两表之间表结构必须一致，除非附加with validation子&lt;/p&gt;&#xD;
&lt;p&gt;句;&lt;/p&gt;&#xD;
&lt;p&gt;l 如果是从非分区表向分区表做交换，非分区表中的数据必须符合分&lt;/p&gt;&#xD;
&lt;p&gt;区表中指定分区的规则，除非附加without validation子句;&lt;/p&gt;&#xD;
&lt;p&gt;l 如果从分区表向分区表做交换，被交换的分区的数据必须符合分区&lt;/p&gt;&#xD;
&lt;p&gt;规则，除非附加without validation子句;&lt;/p&gt;&#xD;
&lt;p&gt;l Global索引或涉及到数据改动了的global索引分区会被置为&lt;/p&gt;&#xD;
&lt;p&gt;unusable，除非附加update indexes子句。&lt;/p&gt;&#xD;
&lt;p&gt;提示：&lt;/p&gt;&#xD;
&lt;p&gt;一旦附加了without validation子句，则表示不再验证数据有效性，&lt;/p&gt;&#xD;
&lt;p&gt;因此指定该子句时务必慎重。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/1994333.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2011/03/24/1994333.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wuyisky/archive/2010/08/18/1802072.html</id><title type="text">新工作</title><summary type="text">终于换了一个工作了oracle 数据库开发还要研究下数据仓库和BI</summary><published>2010-08-18T01:51:00Z</published><updated>2010-08-18T01:51:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2010/08/18/1802072.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2010/08/18/1802072.html"/><content type="html">&lt;p&gt;终于换了一个工作了&lt;/p&gt;&#xD;
&lt;p&gt;oracle 数据库开发&lt;/p&gt;&#xD;
&lt;p&gt;还要研究下数据仓库和BI&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/1802072.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2010/08/18/1802072.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wuyisky/archive/2010/07/01/1769108.html</id><title type="text">oracle 日常维护工作内容</title><summary type="text">oracle 日常维护工作内容oracle 日常维护工作内容ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控： (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行检查,发现并解决问题。(2). 每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。(3). 检查表空间碎...</summary><published>2010-07-01T06:15:00Z</published><updated>2010-07-01T06:15:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2010/07/01/1769108.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2010/07/01/1769108.html"/><content type="html">&lt;div &gt;&#xD;
&lt;p&gt;oracle 日常维护工作内容oracle 日常维护工作内容&lt;br /&gt;ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;(1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行检查,发现并解决问题。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(2). 每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(3). 检查表空间碎片,提出下一步空间管理计划。对ORACLE数据库状态进行一次全面检查。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;每天的工作&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;(1).确认所有的INSTANCE状态正常.登陆到所有数据库或例程,检测ORACLE后台进程:&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;$ps &amp;#8211;-ef|grep ora&lt;/p&gt;&#xD;
&lt;p&gt;(2). 检查文件系统的使用（剩余空间）。如果文件系统的剩余空间小于20%，需删除不用的文件以释放空间。&lt;/p&gt;&#xD;
&lt;p&gt;对于太平洋业务交易生产系统,要特别关注: /u01&amp;nbsp; 和&amp;nbsp; 数据库日志归档目录,当空间不足,请急时清理.&lt;/p&gt;&#xD;
&lt;p&gt;$df -k&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;$df -h&lt;/p&gt;&#xD;
&lt;p&gt;(3). 检查日志文件和trace文件记录alert和trace文件中的错误.连接到每个需管理的系统&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#8251; 使用&amp;#8217;telnet&amp;#8217;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#8251; 对每个数据库,cd 到bdump目录,通常是$ORACLE_BASE/admin/&amp;lt;SID&amp;gt;/bdump&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#8251; 使用 Unix &amp;#8216;tail&amp;#8217;命令来查看alert_&amp;lt;SID&amp;gt;.log文件&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#8251; 如果发现任何新的ORA- 错误,记录并解决&lt;/p&gt;&#xD;
&lt;p&gt;(4). 检查数据文件的状态记录状态不是&amp;#8220;online&amp;#8221;的数据文件，并做恢复。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;Select file_name from dba_data_files where status=&amp;#8217;OFFLINE&amp;#8217;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(5). 检查表空间的使用情况&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;--如果有表空间大于90%的就应该在当天清算前,增大该表空间,但对于(temp,undo)表空间除外,&lt;/p&gt;&#xD;
&lt;p&gt;--重点关注HS_HIS_data 和 HS_HIS_IDX 这两个表空间.&lt;/p&gt;&#xD;
&lt;p&gt;SELECT d.tablespace_name, SPACE "SUM_SPACE(M)", blocks sum_blocks,&lt;/p&gt;&#xD;
&lt;p&gt;SPACE - NVL (free_space, 0) "USED_SPACE(M)",&lt;/p&gt;&#xD;
&lt;p&gt;ROUND ((1 - NVL (free_space, 0) / SPACE) * 100, 2) "USED_RATE(%)",&lt;/p&gt;&#xD;
&lt;p&gt;free_space "FREE_SPACE(M)"&lt;/p&gt;&#xD;
&lt;p&gt;FROM (SELECT&amp;nbsp;&amp;nbsp; tablespace_name, ROUND (SUM (BYTES) / (1024 * 1024),&lt;/p&gt;&#xD;
&lt;p&gt;2) SPACE, SUM (blocks) blocks&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_data_files&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY tablespace_name) d,&lt;/p&gt;&#xD;
&lt;p&gt;(SELECT&amp;nbsp;&amp;nbsp; tablespace_name,&lt;/p&gt;&#xD;
&lt;p&gt;ROUND (SUM (BYTES) / (1024 * 1024), 2) free_space&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_free_space&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY tablespace_name) f&lt;/p&gt;&#xD;
&lt;p&gt;WHERE d.tablespace_name = f.tablespace_name( )&lt;/p&gt;&#xD;
&lt;p&gt;UNION ALL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --if have tempfile&lt;/p&gt;&#xD;
&lt;p&gt;SELECT d.tablespace_name, SPACE "SUM_SPACE(M)", blocks sum_blocks,&lt;/p&gt;&#xD;
&lt;p&gt;used_space "USED_SPACE(M)",&lt;/p&gt;&#xD;
&lt;p&gt;ROUND (NVL (used_space, 0) / SPACE * 100, 2) "USED_RATE(%)",&lt;/p&gt;&#xD;
&lt;p&gt;NVL (free_space, 0) "FREE_SPACE(M)"&lt;/p&gt;&#xD;
&lt;p&gt;FROM (SELECT&amp;nbsp;&amp;nbsp; tablespace_name, ROUND (SUM (BYTES) / (1024 * 1024),&lt;/p&gt;&#xD;
&lt;p&gt;2) SPACE, SUM (blocks) blocks&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_temp_files&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY tablespace_name) d,&lt;/p&gt;&#xD;
&lt;p&gt;(SELECT&amp;nbsp;&amp;nbsp; tablespace_name,&lt;/p&gt;&#xD;
&lt;p&gt;ROUND (SUM (bytes_used) / (1024 * 1024), 2) used_space,&lt;/p&gt;&#xD;
&lt;p&gt;ROUND (SUM (bytes_free) / (1024 * 1024), 2) free_space&lt;/p&gt;&#xD;
&lt;p&gt;FROM v$temp_space_header&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY tablespace_name) f&lt;/p&gt;&#xD;
&lt;p&gt;WHERE d.tablespace_name = f.tablespace_name( );&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(6). 检查剩余表空间&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/01 15:56 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT&amp;nbsp;&amp;nbsp; tablespace_name, SUM (blocks) AS free_blk,&lt;/p&gt;&#xD;
&lt;p&gt;TRUNC (SUM (BYTES) / (1024 * 1024)) AS free_m,&lt;/p&gt;&#xD;
&lt;p&gt;MAX (BYTES) / (1024) AS big_chunk_k, COUNT (*) AS num_chunks&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_free_space&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY tablespace_name;&lt;/p&gt;&#xD;
&lt;p&gt;(7). 监控数据库性能运行AWR生成系统报告或者使用statspack收集统计数据&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#8251;注意:TOP-5事件&lt;/p&gt;&#xD;
&lt;p&gt;(8). 检查数据库性能，记录数据库的cpu使用、IO、buffer命中率等等&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;使用vmstat,iostat,glance,top等命令&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(9). 日常出现问题的处理。&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;每周的工作&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;(1). 监控数据库对象的空间扩展情况&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;根据本周每天的检查情况找到空间扩展很快的数据库对象,并采取相应的措施&lt;/p&gt;&#xD;
&lt;p&gt;--- 重点关注HS_HIS_data 和 HS_HIS_IDX 这两个表空间&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;--- 删除历史数据&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;--- 扩表空间&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;alter tablespace &amp;lt;name&amp;gt; add datafile &amp;#8216;&amp;lt;file&amp;gt;&amp;#8217; size &amp;lt;size&amp;gt;;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;EXTENT MANAGEMENT LOCAL&lt;/p&gt;&#xD;
&lt;p&gt;SEGMENT SPACE MANAGEMENT AUTO;&lt;/p&gt;&#xD;
&lt;p&gt;(2). 监控数据量的增长情况&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;根据本周每天的检查情况找到记录数量增长很快的数据库对象,并采取相应的措施&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;--- 重点关注HS_HIS_data 和 HS_HIS_IDX 这两个表空间&lt;/p&gt;&#xD;
&lt;p&gt;--- 删除历史数据&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;--- 扩表空间&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;alter tablespace &amp;lt;name&amp;gt; add datafile &amp;#8216;&amp;lt;file&amp;gt;&amp;#8217; size &amp;lt;size&amp;gt;;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;EXTENT MANAGEMENT LOCAL&lt;/p&gt;&#xD;
&lt;p&gt;SEGMENT SPACE MANAGEMENT AUTO;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(3). 系统健康检查&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;检查以下内容:&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;init&amp;lt;sid&amp;gt;.ora&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;controlfile&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;redo log file&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;archiving&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;sort area size&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;tablespace(system,temporary,tablespace fragment)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;datafiles(online/offline)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;object(number of extent,next extent,index)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;rollback segment&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;logging &amp;amp;tracing(alert.log,max_dump_file_size,sqlnet)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(4). 检查无效的数据库对象&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/01 16:04 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;--look over invalid objects&lt;/p&gt;&#xD;
&lt;p&gt;SELECT owner, object_name, object_type&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_objects&lt;/p&gt;&#xD;
&lt;p&gt;WHERE status = 'invalid';&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(5). 检查不起作用的约束&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/01 16:07 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT owner, constraint_name, table_name, constraint_type, status&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_constraints&lt;/p&gt;&#xD;
&lt;p&gt;WHERE status = 'DISABLED' AND constraint_type = 'P' ;&lt;/p&gt;&#xD;
&lt;p&gt;(6). 检查无效的trigger&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/01 16:08 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;--look over triggers state&lt;/p&gt;&#xD;
&lt;p&gt;SELECT owner, trigger_name, table_name, status&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_triggers&lt;/p&gt;&#xD;
&lt;p&gt;WHERE status = 'DISABLED';&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;每月的工作&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;(1). 检查表空间碎片&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;根据本月每周的检查分析数据库碎片情况,找到相应的解决方法&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(2). 寻找数据库性能调整的机会&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;比较每天对数据库性能的监控报告,确定是否有必要对数据库性能进行调整&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(3). 数据库性能调整&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;如有必要,进行性能调整&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;(4). 提出下一步空间管理计划&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;根据每周的监控,提出空间管理的改进方法&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;======================================&lt;/p&gt;&#xD;
&lt;p&gt;======================================&lt;/p&gt;&#xD;
&lt;p&gt;||&amp;nbsp;&amp;nbsp; &amp;#9733;&amp;#9733;&amp;#9733;Oracle DBA 日常管理&amp;#9733;&amp;#9733;&amp;#9733; ||&lt;/p&gt;&#xD;
&lt;p&gt;======================================&lt;/p&gt;&#xD;
&lt;p&gt;======================================&lt;/p&gt;&#xD;
&lt;p&gt;目的：这篇文档有很详细的资料记录着对一个甚至更多的ORACLE 数据库每天的，每月的，每年的运行的状态的结果及检查的结果，在文档的附录中你将会看到所有检查，修改的SQL和PL/SQL 代码。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-------------&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;目录 &amp;#9733;&lt;/p&gt;&#xD;
&lt;p&gt;-------------&lt;/p&gt;&#xD;
&lt;p&gt;1.日常维护程序&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A． 检查已起的所有实例&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;B． 查找一些新的警告日志&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;C． 检查DBSNMP 是否在运行&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;D． 检查数据库备份是否正确&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;E． 检查备份到磁带中的文件是否正确&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;F． 检查数据库的性能是否正常合理，是否有足够的空间和资源&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;G． 将文档日志复制到备份的数据库中&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;H． 要常看DBA 用户手册&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2.晚间维护程序&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A．收集VOLUMETRIC 的数据&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;3.每周维护工作&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A． 查找那些破坏规则的OBJECT&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;B． 查找是否有违反安全策略的问题&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;C． 查看错误地方的SQL*NET 日志&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;D． 将所有的警告日志存档&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;E． 经常访问供应商的主页&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;4.月维护程序&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A． 查看对数据库会产生危害的增长速度&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;B． 回顾以前数据库优化性能的调整&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;C． 查看I/O 的屏颈问题&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;D． 回顾FRAGMENTATION&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;E． 将来的执行计划&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;F． 查看调整点和维护&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;5.附录&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A． 月维护过程&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;B． 晚间维护过程&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;C． 周维护过程&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;6.参考文献&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;---------------------------------------------------------------&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;==================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;一．日维护过程&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;==================&lt;/p&gt;&#xD;
&lt;p&gt;A．查看所有的实例是否已起&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;确定数据库是可用的，把每个实例写入日志并且运行日报告或是运行测试文件。当然有一些操作我们是希望它能自动运行的。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;可选择执行：用ORACLE 管理器中的&amp;#8216;PROBE&amp;#8217;事件来查看&lt;/p&gt;&#xD;
&lt;p&gt;B．查找新的警告日志文件&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;1). 联接每一个操作管理系统&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2). 使用&amp;#8216;TELNET&amp;#8217;或是可比较程序&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;3). 对每一个管理实例，经常的执行$ORACLE_BASE/&amp;lt;SID&amp;gt;/bdump 操作，并使其能回退到控制数据库的SID。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;4). 在提示下，使用UNIX 中的&amp;#8216;TAIL&amp;#8217;命令查看alert_&amp;lt;SID&amp;gt;.log，或是用其他方式检查文件中最近时期的警告日志&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;5). 如果以前出现过的一些ORA_ERRORS 又出现，将它记录到数据库恢复日志中并且仔细的研究它们，这个数据库恢复日志在〈FILE〉中&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;C．查看DBSNMP 的运行情况&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;检查每个被管理机器的&amp;#8216;DBSNMP&amp;#8217;进程并将它们记录到日志中。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;在UNIX 中，在命令行中，键入ps &amp;#8211;ef | grep dbsnmp,将回看到2个DBSNMP 进程在运行。如果没有，重启DBSNMP。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;D．查数据库备份是否成功&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;E．检查备份的磁带文档是否成功&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;F．检查对合理的性能来说是否有足够的资源&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;1). 检查在表空间中有没有剩余空间。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;对每一个实例来说，检查在表空间中是否存在有剩余空间来满足当天的预期的需要。当数据库中已有的数据是稳定的，数据日增长的平均&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;数也是可以计算出来，最小的剩余空间至少要能满足每天数据的增长。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A） 运行&amp;#8216;FREE.SQL&amp;#8217;来检查表空间的剩余空间。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;B） 运行&amp;#8216;SPACE.SQL&amp;#8217;来检查表空间中的剩余空间百分率&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2). 检查回滚段&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;回滚段的状态一般是在线的，除了一些为复杂工作准备的专用 段，它一般状态是离线的。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;a) 每个数据库都有一个回滚段名字的列表。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;b) 你可以用V$ROLLSTAT 来查询在线或是离线的回滚段的现在状 态.&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;c) 对于所有回滚段的存储参数及名字， 可用DBA_ROLLBACK_SEGS 来查询。但是它不如V$ROLLSTAT 准确。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3). 识别出一些过分的增长&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;查看数据库中超出资源或是增长速度过大的段，这些段的存储参 数需要调整。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;a） 收集日数据大小的信息， 可以用&amp;#8216;ANALYZE5PCT.SQL&amp;#8217;。如果你收集的是每晚的信息， 则可跳过这一步。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;b） 检查当前的范围，可用&amp;#8216;NR.EXTENTS.SQL&amp;#8217;。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;c） 查询当前表的大小信息。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;d） 查询当前索引大小的信息。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;e） 查询增长趋势。&lt;/p&gt;&#xD;
&lt;p&gt;4). 确定空间的范围。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;如果范围空间对象的NEXT_EXTENT 比表空间所能提供的最大范围还要大，那么这将影响数据库的运行。如果我们找到了这个目标，可以用&amp;#8216;ALTER TABLESPACE COALESCE&amp;#8217;调查它的位置，或加另外 的数据文件。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A）运行&amp;#8216;SPACEBOUND.SQL&amp;#8217;。如果都是正常的，将不返回任何行。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;5). 回顾CPU，内存，网络，硬件资源论点的过程&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A）检查CPU的利用情况，进到x:.htm =&amp;gt;system&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;metrics=&amp;gt;CPU 利用页，CPU 的最大限度为400，当CPU 的占用保持在350 以上有一段时间的话，我们就需要查看及研究出现的问题。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;G．将存档日志复制到备用数据库中如果有一个备用数据库，将适当的存档日志复制到备用数据库的期望位置，备用数据库中保存最近期的数据。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;H. 经常查阅DBA 用户手册&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;如果有可能的话，要广泛的阅读，包括DBA 手册，行业杂志，新闻 组或是邮件列表。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;-------------------------------------------------------------&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;二．晚间维护过程&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;大部分的数据库产品将受益于每晚确定的检查进程的运行。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A. 收集VOLUMETRIC 数据&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;1. 分析计划和收集数据更准确的分析计算并保存结果。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;a） 如果你现在没有作这些的话，用&amp;#8216;MK VOLFACT.SQL&amp;#8217;来创建测定体积的表。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;b） 收集晚间数据大小的信息，用&amp;#8216;ANALYZE COMP.SQL&amp;#8217;。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;c） 收集统计结果，用&amp;#8216;POP VOL.SQL&amp;#8217;。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;d） 在空闲的时候检查数据，可能的话，每周或每个月进行。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;我是用MS EXCEL 和ODBC 的联接来检查数据和图表的增长&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-------------------------------------------------------------&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;三．每周维护过程&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;A． 查找被破坏的目标&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;1. 对于每个给定表空间的对象来说，NEXT_EXTENT 的大小是相同的，如12/14/98，缺省的NEXT_EXTENT 的DATAHI 为1G，DATALO 为500MB,&lt;/p&gt;&#xD;
&lt;p&gt;INDEXES 为256MB。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;A） 检查NEXT_EXTENT 的设置，可用&amp;#8216;NEXTEXT.SQL&amp;#8217;。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;B） 检查已有的EXTENTS，可用&amp;#8216;EXISTEXT.SQL&amp;#8217;。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2. 所有的表都应该有唯一的主键&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;a） 查看那些表没有主键，可用&amp;#8216;NO_PK.SQL&amp;#8217;。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;b） 查找那些主键是没有发挥作用的，可用&amp;#8216;DIS_PK.SQL&amp;#8217;。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;c） 所有作索引的主键都要是唯一的，可用&amp;#8216; NONUPK.SQL&amp;#8217;来检 查。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;3. 所有的索引都要放到索引表空间中。运行&amp;#8216;MKREBUILD_IDX.SQL&amp;#8217;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;4. 不同的环境之间的计划应该是同样的，特别是测试环境和成品环境之间的 计划应该相同。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;a） 检查不同的2 个运行环境中的数据类型是否一致，可用&amp;#8216;DATATYPE.SQL&amp;#8217;。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;b） 在2 个不同的实例中寻找对象的不同点， 可用&amp;#8216;OBJ_COORD.SQL&amp;#8217;。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;c） 更好的做法是，使用一种工具，象寻求软件的计划管理器那样的 工具。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;B． 查看是否有危害到安全策略的问题。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;C． 查看报错的SQL*NET 日志。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;1. 客户端的日志。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2. 服务器端的日志。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;D．将所有的警告日志存档&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;E．供应商的主页&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;====================&lt;/p&gt;&#xD;
&lt;p&gt;1. ORACLE 供应商&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;http://www.oracle.com/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;http://technet.oracle.com/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;http://www.oracle.com/support&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;http://www.oramag.com/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2. Quest Software&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;http://www.quests.com/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;3. Sun Microsystems&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;http://www.sun.com/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;=====================&lt;/p&gt;&#xD;
&lt;p&gt;----------------------------------------------------------------&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;==================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;四．月维护过程&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;==================&lt;/p&gt;&#xD;
&lt;p&gt;A．查看对数据库会产生危害的增长速度&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;gt;从以前的记录或报告中回顾段增长的变化以此来确定段增长带来危害&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;B． 回顾以前数据库优化性能的调整&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;gt;回顾一般ORACLE 数据库的调整点，比较以前的报告来确定有害的发展趋势。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;C． 查看I/O 的屏颈问题&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;1. 查看前期数据库文件的活动性，比较以前的输出来判断有可能导致屏颈问题的趋势。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;D． 回顾FRAGMENTATION&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;E． 计划数据库将来的性能&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;gt;比较ORACLE 和操作系统的CPU，内存，网络，及硬盘的利用率以此来确定在近期将会有的一些资源争夺的趋势&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;gt;当系统将超出范围时要把性能趋势当作服务水平的协议来看&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;F． 完成调整和维护工作&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;gt;使修改满足避免系统资源的争夺的需要，这里面包括增加新资源或使预期的停工。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;----------------------------------------------------------------&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;==============&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;五．附录&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;==============&lt;/p&gt;&#xD;
&lt;p&gt;===============&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;A. 日常程序&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;===============&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#8251;做好每天的记录,总结分析表空间的增长幅度&amp;#8251;&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;- Free.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 16:54 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT&amp;nbsp;&amp;nbsp; tablespace_name, SUM (blocks) AS free_blk,&lt;/p&gt;&#xD;
&lt;p&gt;TRUNC (SUM (BYTES) / (1024 * 1024)) AS free_m,&lt;/p&gt;&#xD;
&lt;p&gt;MAX (BYTES) / (1024) AS big_chunk_k, COUNT (*) AS num_chunks&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_free_space&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY tablespace_name&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;- Space.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To check free, pct_free, and allocated space within a tablespace&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 16:58 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT tablespace_name, largest_free_chunk, nr_free_chunks, sum_alloc_blocks,&lt;/p&gt;&#xD;
&lt;p&gt;sum_free_blocks,&lt;/p&gt;&#xD;
&lt;p&gt;TO_CHAR (100 * sum_free_blocks / sum_alloc_blocks,&lt;/p&gt;&#xD;
&lt;p&gt;'09.99'&lt;/p&gt;&#xD;
&lt;p&gt;)&lt;/p&gt;&#xD;
&lt;p&gt;|| '%' AS pct_free&lt;/p&gt;&#xD;
&lt;p&gt;FROM (SELECT&amp;nbsp;&amp;nbsp; tablespace_name, SUM (blocks) AS sum_alloc_blocks&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_data_files&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY tablespace_name),&lt;/p&gt;&#xD;
&lt;p&gt;(SELECT&amp;nbsp;&amp;nbsp; tablespace_name AS fs_ts_name,&lt;/p&gt;&#xD;
&lt;p&gt;MAX (blocks) AS largest_free_chunk,&lt;/p&gt;&#xD;
&lt;p&gt;COUNT (blocks) AS nr_free_chunks,&lt;/p&gt;&#xD;
&lt;p&gt;SUM (blocks) AS sum_free_blocks&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_free_space&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY tablespace_name)&lt;/p&gt;&#xD;
&lt;p&gt;WHERE tablespace_name = fs_ts_name&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;- analyze5pct.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;--To analyze tables and indexes quickly, using a 5% sample size&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;--(do not use this script if you are performing the overnight collection of volumetric data)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;BEGIN&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;dbms_utility.analyze_schema ( '&amp;amp;OWNER', 'ESTIMATE', NULL, 5 ) ;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;END ;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;- nr_extents.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To find out any object reaching &amp;lt;threshold&amp;gt;;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- extents, and manually upgrade it to allow unlimited max_extents (thus only objects we *expect* to be big are allowed to become big)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:25 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT&amp;nbsp;&amp;nbsp; e.owner, e.segment_type, e.segment_name, COUNT (*) AS nr_extents,&lt;/p&gt;&#xD;
&lt;p&gt;s.max_extents,&lt;/p&gt;&#xD;
&lt;p&gt;TO_CHAR (SUM (e.BYTES) / (1024 * 1024), '999,999.90') AS mb&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_extents e, dba_segments s&lt;/p&gt;&#xD;
&lt;p&gt;WHERE e.segment_name = s.segment_name&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY e.owner, e.segment_type, e.segment_name, s.max_extents&lt;/p&gt;&#xD;
&lt;p&gt;HAVING COUNT (*) &amp;gt; &amp;amp;threshold&lt;/p&gt;&#xD;
&lt;p&gt;OR ((s.max_extents - COUNT (*)) &amp;lt; &amp;amp;&amp;amp;threshold)&lt;/p&gt;&#xD;
&lt;p&gt;ORDER BY COUNT (*) DESC&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;- spacebound.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To identify space-bound objects. If all is well, no rows are returned.&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- If any space-bound objects are found, look at value of NEXT extent size to figure out what happened.&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- Then use coalesce (alter tablespace &amp;lt;foo&amp;gt;; coalesce .&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- Lastly, add another datafile to the tablespace if needed.&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:26 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT a.table_name, a.next_extent, a.tablespace_name&lt;/p&gt;&#xD;
&lt;p&gt;FROM all_tables a,&lt;/p&gt;&#xD;
&lt;p&gt;(SELECT&amp;nbsp;&amp;nbsp; tablespace_name, MAX (BYTES) AS big_chunk&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_free_space&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY tablespace_name) f&lt;/p&gt;&#xD;
&lt;p&gt;WHERE f.tablespace_name = a.tablespace_name AND a.next_extent &amp;gt; f.big_chunk&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;===================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;B. 每晚处理程序&amp;#9733;&lt;/p&gt;&#xD;
&lt;p&gt;===================&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;- mk_volfact.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- mk_volfact.sql (only run this once to set it up; do not run it nightly!)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- Table UTL_VOL_FACTS&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;CREATE TABLE utl_vol_facts (&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;table_name VARCHAR2(30),&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;num_rows NUMBER,&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;meas_dt DATE )&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;TABLESPACE platab&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;STORAGE (&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;INITIAL 128k&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;NEXT 128k&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;PCTINCREASE 0&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;MINEXTENTS 1&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;MAXEXTENTS unlimited&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;-Public Synonym&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;CREATE PUBLIC SYNONYM utl_vol_facts FOR &amp;amp;OWNER..utl_vol_facts&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;-Grants for UTL_VOL_FACTS&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;GRANT SELECT ON utl_vol_facts TO public&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;-analyze_comp.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;BEGIN&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;sys.dbms_utility.analyze_schema ( '&amp;amp;OWNER','COMPUTE');&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;END ;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-&amp;#9733;-pop_vol.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:28 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;INSERT INTO utl_vol_facts&lt;/p&gt;&#xD;
&lt;p&gt;SELECT table_name, NVL (num_rows, 0) AS num_rows,&lt;/p&gt;&#xD;
&lt;p&gt;TRUNC (last_analyzed) AS meas_dt&lt;/p&gt;&#xD;
&lt;p&gt;FROM all_tables&amp;nbsp;&amp;nbsp; -- or just user_tables&lt;/p&gt;&#xD;
&lt;p&gt;WHERE owner IN ('&amp;amp;OWNER'); -- or a comma-separated list of owners&lt;/p&gt;&#xD;
&lt;p&gt;/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;commit ;&lt;/p&gt;&#xD;
&lt;p&gt;/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;===================&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#9733;C. 每周处理程序&amp;#9733;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;===================&lt;/p&gt;&#xD;
&lt;p&gt;1. nextext.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To find tables that don't match the tablespace default for NEXT extent.&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- The implicit rule here is that every table in a given tablespace should&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- use the exact same value for NEXT, which should also be the tablespace's&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- default value for NEXT.&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- This tells us what the setting for NEXT is for these objects today.&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:30 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT&amp;nbsp;&amp;nbsp; segment_name, segment_type, ds.next_extent AS actual_next,&lt;/p&gt;&#xD;
&lt;p&gt;dt.tablespace_name, dt.next_extent AS default_next&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_tablespaces dt, dba_segments ds&lt;/p&gt;&#xD;
&lt;p&gt;WHERE dt.tablespace_name = ds.tablespace_name&lt;/p&gt;&#xD;
&lt;p&gt;AND dt.next_extent != ds.next_extent&lt;/p&gt;&#xD;
&lt;p&gt;AND ds.owner = UPPER ('&amp;amp;OWNER')&lt;/p&gt;&#xD;
&lt;p&gt;ORDER BY tablespace_name, segment_type, segment_name&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2. existext.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To check existing extents&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- This tells us how many of each object's extents differ in size from the tablespace's default size. If this report shows a lot of different sized extents, your free space is likely to become fragmented. If so,&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- this tablespace is a candidate for reorganizing.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:31 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT&amp;nbsp;&amp;nbsp; segment_name, segment_type, COUNT (*) AS nr_exts,&lt;/p&gt;&#xD;
&lt;p&gt;SUM (DECODE (dx.BYTES, dt.next_extent, 0, 1)) AS nr_illsized_exts,&lt;/p&gt;&#xD;
&lt;p&gt;dt.tablespace_name, dt.next_extent AS dflt_ext_size&lt;/p&gt;&#xD;
&lt;p&gt;FROM dba_tablespaces dt, dba_extents dx&lt;/p&gt;&#xD;
&lt;p&gt;WHERE dt.tablespace_name = dx.tablespace_name AND dx.owner = '&amp;amp;OWNER'&lt;/p&gt;&#xD;
&lt;p&gt;GROUP BY segment_name, segment_type, dt.tablespace_name, dt.next_extent;&lt;/p&gt;&#xD;
&lt;p&gt;3. No_pk.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To find tables without PK constraint&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:31 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT table_name&lt;/p&gt;&#xD;
&lt;p&gt;FROM all_tables&lt;/p&gt;&#xD;
&lt;p&gt;WHERE owner = '&amp;amp;OWNER'&lt;/p&gt;&#xD;
&lt;p&gt;MINUS&lt;/p&gt;&#xD;
&lt;p&gt;SELECT table_name&lt;/p&gt;&#xD;
&lt;p&gt;FROM all_constraints&lt;/p&gt;&#xD;
&lt;p&gt;WHERE owner = '&amp;amp;&amp;amp;OWNER' AND constraint_type = 'P';&lt;/p&gt;&#xD;
&lt;p&gt;4. disPK.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To find out which primary keys are disabled&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:32 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT owner, constraint_name, table_name, status&lt;/p&gt;&#xD;
&lt;p&gt;FROM all_constraints&lt;/p&gt;&#xD;
&lt;p&gt;WHERE owner = '&amp;amp;OWNER' AND status = 'DISABLED' AND constraint_type = 'P'&lt;/p&gt;&#xD;
&lt;p&gt;5. nonuPK.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To find tables with nonunique PK indexes. Requires that PK names&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- follow a naming convention. An alternative query follows that&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- does not have this requirement, but runs more slowly.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:33 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT index_name, table_name, uniqueness&lt;/p&gt;&#xD;
&lt;p&gt;FROM all_indexes&lt;/p&gt;&#xD;
&lt;p&gt;WHERE index_name LIKE '&amp;amp;KNAME%'&lt;/p&gt;&#xD;
&lt;p&gt;AND owner = '&amp;amp;OWNER'&lt;/p&gt;&#xD;
&lt;p&gt;AND uniqueness = 'NONUNIQUE'&lt;/p&gt;&#xD;
&lt;p&gt;UNION&lt;/p&gt;&#xD;
&lt;p&gt;SELECT c.constraint_name, i.tablespace_name, i.uniqueness&lt;/p&gt;&#xD;
&lt;p&gt;FROM all_constraints c, all_indexes i&lt;/p&gt;&#xD;
&lt;p&gt;WHERE c.owner = UPPER ('&amp;amp;OWNER')&lt;/p&gt;&#xD;
&lt;p&gt;AND i.uniqueness = 'NONUNIQUE'&lt;/p&gt;&#xD;
&lt;p&gt;AND c.constraint_type = 'P'&lt;/p&gt;&#xD;
&lt;p&gt;AND i.index_name = c.constraint_name&lt;/p&gt;&#xD;
&lt;p&gt;6. mkrebuild_idx.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- Rebuild indexes to have correct storage parameters&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:33 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT 'alter index ' || index_name || ' rebuild ',&lt;/p&gt;&#xD;
&lt;p&gt;'tablespace INDEXES storage '&lt;/p&gt;&#xD;
&lt;p&gt;|| ' ( initial 256 K next 256 K pctincrease 0 ) ; '&lt;/p&gt;&#xD;
&lt;p&gt;FROM all_indexes&lt;/p&gt;&#xD;
&lt;p&gt;WHERE (tablespace_name != 'INDEXES' OR next_extent != (256 * 1024))&lt;/p&gt;&#xD;
&lt;p&gt;AND owner = '&amp;amp;OWNER'&lt;/p&gt;&#xD;
&lt;p&gt;/&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;7. datatype.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To check datatype consistency between two environments&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:34 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT&amp;nbsp;&amp;nbsp; table_name, column_name, data_type, data_length, data_precision,&lt;/p&gt;&#xD;
&lt;p&gt;data_scale, nullable&lt;/p&gt;&#xD;
&lt;p&gt;FROM all_tab_columns&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- first environment&lt;/p&gt;&#xD;
&lt;p&gt;WHERE owner = '&amp;amp;OWNER'&lt;/p&gt;&#xD;
&lt;p&gt;MINUS&lt;/p&gt;&#xD;
&lt;p&gt;SELECT&amp;nbsp;&amp;nbsp; table_name, column_name, data_type, data_length, data_precision,&lt;/p&gt;&#xD;
&lt;p&gt;data_scale, nullable&lt;/p&gt;&#xD;
&lt;p&gt;FROM [email=all_tab_columns@&amp;amp;my_db_link]all_tab_columns@&amp;amp;my_db_link[/email]&amp;nbsp;&amp;nbsp; -- second environment&lt;/p&gt;&#xD;
&lt;p&gt;WHERE owner = '&amp;amp;OWNER2'&lt;/p&gt;&#xD;
&lt;p&gt;ORDER BY table_name, column_name ;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;8. obj_coord.sql&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;-- To find out any difference in objects between two instances&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;/* Formatted on 2007/03/06 17:35 (Formatter Plus v4.8.7) */&lt;/p&gt;&#xD;
&lt;p&gt;SELECT object_name, object_type&lt;/p&gt;&#xD;
&lt;p&gt;FROM user_objects&lt;/p&gt;&#xD;
&lt;p&gt;MINUS&lt;/p&gt;&#xD;
&lt;p&gt;SELECT object_name, object_type&lt;/p&gt;&#xD;
&lt;p&gt;FROM [email=user_objects@&amp;amp;my_db_link]user_objects@&amp;amp;my_db_link[/email]&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/1769108.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2010/07/01/1769108.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wuyisky/archive/2010/06/23/1763578.html</id><title type="text">RedHat Linux常见命令</title><summary type="text">1 常用命令 命令 说明 man rm （ rm --help ） 查看帮助 cd 进入目录 ps -ef|grep java 查看进程 pstree |grep java 查看进程树 kill somePid 杀掉某进程 kill -9 $(ps -ef|grep udpserver | grep java|awk '{print $2}' ) 删除 udpserver 进程 rpm -aq|g...</summary><published>2010-06-23T06:27:00Z</published><updated>2010-06-23T06:27:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2010/06/23/1763578.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2010/06/23/1763578.html"/><content type="html">&lt;p&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 常用命令 &lt;br /&gt;&#xD;
&amp;nbsp;命令 &lt;br /&gt;&#xD;
&amp;nbsp;说明 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
man rm （ rm --help ） &lt;br /&gt;&#xD;
&amp;nbsp;查看帮助 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
cd &lt;br /&gt;&#xD;
&amp;nbsp;进入目录 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ps -ef|grep java &lt;br /&gt;&#xD;
&amp;nbsp;查看进程 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
pstree |grep java &lt;br /&gt;&#xD;
&amp;nbsp;查看进程树 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
kill somePid &lt;br /&gt;&#xD;
&amp;nbsp;杀掉某进程 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
kill -9 $(ps -ef|grep udpserver | grep java|awk '{print $2}' ) &lt;br /&gt;&#xD;
&amp;nbsp;删除 udpserver 进程 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
rpm -aq|grep php &lt;br /&gt;&#xD;
&amp;nbsp;查看安装介质 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
pwd &lt;br /&gt;&#xD;
&amp;nbsp;查看当前目录 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ls -l -t &lt;br /&gt;&#xD;
&amp;nbsp;-l 显示详情， -t 按时间排序 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ll &lt;br /&gt;&#xD;
&amp;nbsp;相当于 ls -l &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
find / -name libNativeMethod.so &lt;br /&gt;&#xD;
&amp;nbsp;等同 ll |grep someFile &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
grep someText * &lt;br /&gt;&#xD;
&amp;nbsp;在当前目录所有文本中查找 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ifconfig &lt;br /&gt;&#xD;
&amp;nbsp;IP 地址配置，可以使用 setup 命令启动字符界面来配置 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
chmod a+x somefile &lt;br /&gt;&#xD;
&amp;nbsp;所有用户都可以执行 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
chmod u+x somefile &lt;br /&gt;&#xD;
&amp;nbsp;当前用户可以执行 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
env &lt;br /&gt;&#xD;
&amp;nbsp;环境配置，相当 window 下 set &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
env |grep PATH &lt;br /&gt;&#xD;
&amp;nbsp;查看环境变量 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
export &lt;br /&gt;&#xD;
&amp;nbsp;相当于 set classpath &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
echo &lt;br /&gt;&#xD;
&amp;nbsp;输出变量名 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
netstat -npl &lt;br /&gt;&#xD;
&amp;nbsp;查看端口 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
lsof -i :22 &lt;br /&gt;&#xD;
&amp;nbsp;查看端口进程 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
cp from to &lt;br /&gt;&#xD;
&amp;nbsp;拷贝文件 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
cp -fr ./j2sdk1.4.2_04 /usr/java &lt;br /&gt;&#xD;
&amp;nbsp;拷贝目录 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
mkdir &lt;br /&gt;&#xD;
&amp;nbsp;创建目录 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
mv &lt;br /&gt;&#xD;
&amp;nbsp;剪切或者重命名 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
rm -r &lt;br /&gt;&#xD;
&amp;nbsp;递归删除， -f 表示 force &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
&amp;gt;somefile &lt;br /&gt;&#xD;
&amp;nbsp;清空文件内容 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
which java &lt;br /&gt;&#xD;
&amp;nbsp;查看 java 进程对应的目录 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
who &lt;br /&gt;&#xD;
&amp;nbsp;显示当前用户 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
users &lt;br /&gt;&#xD;
&amp;nbsp;显示当前会话 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
zip -r filename.zip filesdir &lt;br /&gt;&#xD;
&amp;nbsp;某个文件夹打 zip 包 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
unzip somefile.zip &lt;br /&gt;&#xD;
&amp;nbsp;解压 zip 文档到当前目录 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
gunzip somefile.cpio.gz &lt;br /&gt;&#xD;
&amp;nbsp;解压 .gz &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
cpio -idmv &amp;lt; somefile.cpio &lt;br /&gt;&#xD;
&amp;nbsp;CPIO 操作 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ps auxwww|sort -n -r -k 5|head -5 &lt;br /&gt;&#xD;
&amp;nbsp;按资源占用情况来排序，第一个 5 表示第几列，第二个 5 表示前几位 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
hostname -i &lt;br /&gt;&#xD;
&amp;nbsp;显示本机机器名，添加 i ，显示 etc/hosts 对应 ip 地址 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
rpm -ivh some.rpm &lt;br /&gt;&#xD;
&amp;nbsp;安装软件 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
rpm -Uvh some.rpm &lt;br /&gt;&#xD;
&amp;nbsp;更新软件 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
rpm -qa |grep somesoftName &lt;br /&gt;&#xD;
&amp;nbsp;是否已安装某软件 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
tar -xvzf&amp;nbsp; some.tar.gz &lt;br /&gt;&#xD;
&amp;nbsp;解压缩包 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
tar &amp;#8211;cvzf some.tar.gz fileDir &lt;br /&gt;&#xD;
&amp;nbsp;打压缩包 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
shutdown -i6 -y 0 &lt;br /&gt;&#xD;
&amp;nbsp;立即重启服务器 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
reboot &lt;br /&gt;&#xD;
&amp;nbsp;立即重启服务器，相当于 shutdow &amp;#8211;r now &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
halt &lt;br /&gt;&#xD;
&amp;nbsp;立即关机， shutdown -h &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
shutdonw -r 23:30 &lt;/p&gt;&#xD;
&lt;p&gt;shutdown -r +15 &lt;/p&gt;&#xD;
&lt;p&gt;shutdonw -r +30 &lt;br /&gt;&#xD;
&amp;nbsp;定时重启 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
gdmsetup &lt;br /&gt;&#xD;
&amp;nbsp;启动系统配置管理界面，需要在图形界面执行 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
setup &lt;br /&gt;&#xD;
&amp;nbsp;启动文字配置管理界面 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
vi /etc/sysconfig/network &lt;br /&gt;&#xD;
&amp;nbsp;修改机器名 , 然后要重启机器或者 service network restart &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
locale &lt;br /&gt;&#xD;
&amp;nbsp;显示系统语言 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
export LANG=zh_CN.GBK &lt;br /&gt;&#xD;
&amp;nbsp;设定系统语言，解决 consol 中文乱码 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ln -s src_full_file the_link_name &lt;br /&gt;&#xD;
&amp;nbsp;创建软链接 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
last &lt;br /&gt;&#xD;
&amp;nbsp;倒序查看已登陆用户历史 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
history &lt;br /&gt;&#xD;
&amp;nbsp;查看历史命令 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
tail -10 someFile &lt;br /&gt;&#xD;
&amp;nbsp;查看文件后 10 行内容 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
head -10 someFile &lt;br /&gt;&#xD;
&amp;nbsp;查看文件前 10 行内容 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
tail -f someFile &lt;br /&gt;&#xD;
&amp;nbsp;实时查看文件内容，用于调试 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
date -s 10/09/2009 &lt;br /&gt;&#xD;
&amp;nbsp;修改日期 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
date -s 13:24:00 &lt;br /&gt;&#xD;
&amp;nbsp;修改时间，直接 date 显示时间 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
df -k &lt;br /&gt;&#xD;
&amp;nbsp;查看文件磁盘空间 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
df -v &lt;br /&gt;&#xD;
&amp;nbsp;查看文件空间 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
du &lt;br /&gt;&#xD;
&amp;nbsp;查看磁盘空间使用情况 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
free &lt;br /&gt;&#xD;
&amp;nbsp;查看内存使用情况 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
top &lt;br /&gt;&#xD;
&amp;nbsp;查看当前系统资源使用情况 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
vmstat 5 10 &lt;br /&gt;&#xD;
&amp;nbsp;没 5 秒刷新一次，刷新 10 次； time 、 timex 、 uptime 、 iostat 、 sar &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
cat /proc/cpuinfo|grep processor|wc &amp;#8211; l &lt;br /&gt;&#xD;
&amp;nbsp;获取 cpu 个数 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
service mysqld start &lt;br /&gt;&#xD;
&amp;nbsp;启动 mysql 服务，其他如 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
service mysqld stop &lt;br /&gt;&#xD;
&amp;nbsp;停止 mysql 服务 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
serice mysqld status &lt;br /&gt;&#xD;
&amp;nbsp;显示 mysql 服务状态 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
service &amp;#8211;status-al &lt;br /&gt;&#xD;
&amp;nbsp;查看已有服务 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 应用软件 &lt;br /&gt;&#xD;
2.1&amp;nbsp;&amp;nbsp;&amp;nbsp; LAMP &lt;br /&gt;&#xD;
apache 默认目录为 /etc/httpd 下，文件目录默认在 /var/www/html 下 &lt;/p&gt;&#xD;
&lt;p&gt;mysql 的默认目录在 /var/lib/mysql &lt;/p&gt;&#xD;
&lt;p&gt;修改密码： mysqladmin -u root password YourPassword &lt;/p&gt;&#xD;
&lt;p&gt;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; &lt;/p&gt;&#xD;
&lt;p&gt;2.2&amp;nbsp;&amp;nbsp;&amp;nbsp; WAS &lt;br /&gt;&#xD;
如果停止 was 时候不能录入密码 , 通过在命令方式显示指定 username 和 password 参数方式来停止 : &lt;/p&gt;&#xD;
&lt;p&gt;./stopServer.sh server1 -username was01 -password was01 &lt;/p&gt;&#xD;
&lt;p&gt;was 添加节点： addNode 192.168.1.152 -username wasdm -password wasdm &lt;/p&gt;&#xD;
&lt;p&gt;删除 profile ： manageprofiles.bat -delete -profileName profileName &lt;/p&gt;&#xD;
&lt;p&gt;2.3&amp;nbsp;&amp;nbsp;&amp;nbsp; MQ &lt;br /&gt;&#xD;
命令 &lt;br /&gt;&#xD;
&amp;nbsp;说明 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
runmqcfg &lt;br /&gt;&#xD;
&amp;nbsp;启动 mq 管理控制台 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
crtmqm someqm &lt;br /&gt;&#xD;
&amp;nbsp;创建队列管理器，或者 crtmqm &amp;#8211; q 队列管理器名称 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
strmqm someqm &lt;br /&gt;&#xD;
&amp;nbsp;启动队列管理器 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
runmqsc someqm &lt;br /&gt;&#xD;
&amp;nbsp;运行队列管理器 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
define qlocal(theq) &lt;br /&gt;&#xD;
&amp;nbsp;创建本地队列 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
define channel(thechl) chltype (SVRCONN) &lt;br /&gt;&#xD;
&amp;nbsp;创建服务器连接通道 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
delete qlocal( 队列名称 )/channel( 通道名称 ) &lt;br /&gt;&#xD;
&amp;nbsp;删除本地队列 / 通道 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
display qlocal(*)/channel(*) &lt;br /&gt;&#xD;
&amp;nbsp;显示所有本地队列 / 通道 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
dspmq &lt;br /&gt;&#xD;
&amp;nbsp;显示队列管理器 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
dltmqm 队列管理器名称 &lt;br /&gt;&#xD;
&amp;nbsp;删除队列管理器 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
runmqlsr &amp;#8211; m 队列管理器名称 &amp;#8211; t TCP &amp;amp; &lt;br /&gt;&#xD;
&amp;nbsp;后台启动队列管理器侦听 , 默认 1414 ( 若指定端口，则 runmqlsr &amp;#8211; m 队列管理器名称 &amp;#8211; t TCP &amp;#8211; p 端口号 ) &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
endmqm &amp;#8211; i 队列管理器名称 &lt;br /&gt;&#xD;
&amp;nbsp;立即停止队列管理器 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
display qlocal( 队列名称 ) &lt;br /&gt;&#xD;
&amp;nbsp;查看队列里面有没有消息，在显示的列表里面有一个 curdepth(0), 括号里面的数字说明包含队列消息的个数 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
clear qlocal( 队列名称 ) &lt;br /&gt;&#xD;
&amp;nbsp;清除队列里面的消息 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
alter qmgr CCSID(1381) &lt;br /&gt;&#xD;
&amp;nbsp;修改语言 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;创建队列管理器后，要通过 alter qmgr CCSID(1381) 命令修改队列管理器的字符编码， &lt;/p&gt;&#xD;
&lt;p&gt;通过 runmqlsr &amp;#8211; m 队列管理器名称 &amp;#8211; t TCP &amp;#8211; p 1414 &amp;amp; 启动队列管理器侦听。 &lt;/p&gt;&#xD;
&lt;p&gt;2.4&amp;nbsp;&amp;nbsp;&amp;nbsp; Oracle &lt;br /&gt;&#xD;
2.4.1&amp;nbsp;&amp;nbsp; 重启 &lt;br /&gt;&#xD;
#su - oracle &lt;/p&gt;&#xD;
&lt;p&gt;#sqlplus /nolog &lt;/p&gt;&#xD;
&lt;p&gt;#connect /as sysdba &lt;/p&gt;&#xD;
&lt;p&gt;#shutdown immediate &lt;/p&gt;&#xD;
&lt;p&gt;#startup &lt;/p&gt;&#xD;
&lt;p&gt;2.4.2&amp;nbsp;&amp;nbsp; 启动 &lt;br /&gt;&#xD;
#su - oracle &lt;/p&gt;&#xD;
&lt;p&gt;#sqlplus /nolog &lt;/p&gt;&#xD;
&lt;p&gt;#connect /as sysdba &lt;/p&gt;&#xD;
&lt;p&gt;#startup &lt;/p&gt;&#xD;
&lt;p&gt;#quit &lt;/p&gt;&#xD;
&lt;p&gt;退出后在启动 listener &lt;/p&gt;&#xD;
&lt;p&gt;#lsnrctl start &lt;/p&gt;&#xD;
&lt;p&gt;#lsnrctl status&amp;nbsp; （查看状态） &lt;/p&gt;&#xD;
&lt;p&gt;2.4.3&amp;nbsp;&amp;nbsp; 创建 oracle 数据库 &lt;br /&gt;&#xD;
以 oracle 用户登录 &lt;/p&gt;&#xD;
&lt;p&gt;cd ${oracle_home}/db_1/bin &lt;/p&gt;&#xD;
&lt;p&gt;./dbca &lt;/p&gt;&#xD;
&lt;p&gt;注意设置中文字符集：共两处（ zhgbk16 ， simplechinese ） &lt;/p&gt;&#xD;
&lt;p&gt;2.4.4&amp;nbsp;&amp;nbsp; 解决 account is locked 方法 &lt;br /&gt;&#xD;
进入 oem 管理控制台来，更改用户的状态，应用即可。 &lt;/p&gt;&#xD;
&lt;p&gt;或者： aleter user someuser unlocked &lt;/p&gt;&#xD;
&lt;p&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vi 用法 &lt;br /&gt;&#xD;
命令 &lt;br /&gt;&#xD;
&amp;nbsp;说明 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
vi someFile &lt;br /&gt;&#xD;
&amp;nbsp;编辑或者创建 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
i 编辑 &lt;br /&gt;&#xD;
&amp;nbsp;esc 退出，跟 i 配合使用。 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
:q! &lt;br /&gt;&#xD;
&amp;nbsp;退出，不保存 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
:wq! &lt;br /&gt;&#xD;
&amp;nbsp;退出，保存 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
:w &lt;br /&gt;&#xD;
&amp;nbsp;保存，不退出 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
k ， j&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&#xD;
&amp;nbsp;上下键 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
h ， l &lt;br /&gt;&#xD;
&amp;nbsp;左右键 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ctrl+f &lt;br /&gt;&#xD;
&amp;nbsp;向下翻页 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ctrl+b &lt;br /&gt;&#xD;
&amp;nbsp;向上翻页 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ctrl+d &lt;br /&gt;&#xD;
&amp;nbsp;向下翻半页 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
ctrl+u &lt;br /&gt;&#xD;
&amp;nbsp;向上翻半页 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
:se nu &lt;br /&gt;&#xD;
&amp;nbsp;显示行号 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
:n &lt;br /&gt;&#xD;
&amp;nbsp;到第 n 行 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
G &lt;br /&gt;&#xD;
&amp;nbsp;到最后一行 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
gg &lt;br /&gt;&#xD;
&amp;nbsp;到第一行 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
dd &lt;br /&gt;&#xD;
&amp;nbsp;删除一行 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
yy &lt;br /&gt;&#xD;
&amp;nbsp;复制一行 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
p &lt;br /&gt;&#xD;
&amp;nbsp;粘贴 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
/someText &lt;br /&gt;&#xD;
&amp;nbsp;查找 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
n &lt;br /&gt;&#xD;
&amp;nbsp;继续查找 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
%s/old/new &lt;br /&gt;&#xD;
&amp;nbsp;全部替换 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
:s/old/new &lt;br /&gt;&#xD;
&amp;nbsp;替换第一个 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
U &lt;br /&gt;&#xD;
&amp;nbsp;undo ，仅一步，同文本编辑器的 undo ） &lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
u &lt;br /&gt;&#xD;
&amp;nbsp;undo ，当前行恢复为编辑前的情况 &lt;br /&gt;&#xD;
&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 其他 &lt;br /&gt;&#xD;
4.1&amp;nbsp;&amp;nbsp;&amp;nbsp; 添加类到 classpath 上 &lt;br /&gt;&#xD;
在启动脚本 startup.sh 上添加如下： &lt;/p&gt;&#xD;
&lt;p&gt;LD_LIBRARY_PATH=/lib:/usr/lib:/home/someDir/lib &lt;/p&gt;&#xD;
&lt;p&gt;export LD_LIBRARY_PATH &lt;/p&gt;&#xD;
&lt;p&gt;在 consoel 设置环境变量，没有持久化，只在本窗口起作用，可以设置在 /etc/profile 中 &lt;/p&gt;&#xD;
&lt;p&gt;4.2&amp;nbsp;&amp;nbsp;&amp;nbsp; 开机执行 &lt;br /&gt;&#xD;
在 /etc/rc5.d/ 目录下写一个 S 开头的脚本即可 &lt;/p&gt;&#xD;
&lt;p&gt;4.3&amp;nbsp;&amp;nbsp;&amp;nbsp; 解决系统默认不允许从光盘执行 &lt;br /&gt;&#xD;
现象 bash: ./launchpad.sh: /bin/sh: bad interpreter: Permission denied &lt;/p&gt;&#xD;
&lt;p&gt;执行命令： &lt;/p&gt;&#xD;
&lt;p&gt;ls -l /dev/dvd* &lt;/p&gt;&#xD;
&lt;p&gt;显示如下： &lt;/p&gt;&#xD;
&lt;p&gt;lrwxrwxrwx&amp;nbsp; 1 root root 3 Feb 29 01:17 /dev/dvd -&amp;gt; hdc &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;改 /etc/fstab 中的设置，添加 &lt;/p&gt;&#xD;
&lt;p&gt;/dev/hda /media auto users,exec,noauto,managed 0 0 ， &lt;/p&gt;&#xD;
&lt;p&gt;然后重新插入光盘（或者 umount /media/* ， mount &amp;#8211; r /media ）。 &lt;/p&gt;&#xD;
&lt;p&gt;4.4&amp;nbsp;&amp;nbsp;&amp;nbsp; 安装界面必备的包 &lt;br /&gt;&#xD;
rpm -Uvh libXp_1* &lt;/p&gt;&#xD;
&lt;p&gt;4.5&amp;nbsp;&amp;nbsp;&amp;nbsp; 让 root 帐户可以 fpt &lt;br /&gt;&#xD;
/etc/vsftpd.ftpusers 和 /etc/vsftpd.user_list ，注释掉 root 帐户 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/qfvszy/archive/2009/11/28/4897617.aspx&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/1763578.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2010/06/23/1763578.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wuyisky/archive/2010/06/04/1751653.html</id><title type="text">Oracle to_char格式化函数</title><summary type="text">Postgres 格式化函数提供一套有效的工具用于把各种数据类型（日期/时间，int，float，numeric）转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。 注意：所有格式化函数的第二个参数是用于转换的模板。表 5-7. 格式化函数  函数返回描述例子to_char(timestamp, text)text把 timestamp 转换成 stringto_char(tim...</summary><published>2010-06-04T09:47:00Z</published><updated>2010-06-04T09:47:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2010/06/04/1751653.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2010/06/04/1751653.html"/><content type="html">&lt;div &gt;&lt;span &gt;Postgres&lt;/span&gt; &lt;strong style="color: black; background-color: #a0ffff"&gt;格式&lt;/strong&gt;化&lt;strong style="color: black; background-color: #99ff99"&gt;函数&lt;/strong&gt;提供一套有效的工具用于把各种数据类型（日期/时间，int，float，numeric）转换成&lt;strong style="color: black; background-color: #a0ffff"&gt;格式&lt;/strong&gt;化的字符串以及反过来从&lt;strong style="color: black; background-color: #a0ffff"&gt;格式&lt;/strong&gt;化的字符串转换成原始的数据类型。 &#xD;
&lt;blockquote &gt;&lt;strong&gt;注意：&lt;/strong&gt;所有&lt;strong style="color: black; background-color: #a0ffff"&gt;格式&lt;/strong&gt;化&lt;strong style="color: black; background-color: #99ff99"&gt;函数&lt;/strong&gt;的第二个参数是用于转换的模板。&lt;/blockquote&gt;&lt;strong&gt;表 5-7. &lt;strong style="color: black; background-color: #a0ffff"&gt;格式&lt;/strong&gt;化&lt;strong style="color: black; background-color: #99ff99"&gt;函数&lt;/strong&gt;&lt;/strong&gt; &lt;br /&gt;&amp;nbsp; &#xD;
&lt;table  border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;th valign="top" align="left"&gt;&lt;strong style="color: black; background-color: #99ff99"&gt;函数&lt;/strong&gt;&lt;/th&gt;&#xD;
&lt;th valign="top" align="left"&gt;返回&lt;/th&gt;&#xD;
&lt;th valign="top" align="left"&gt;描述&lt;/th&gt;&#xD;
&lt;th valign="top" align="left"&gt;例子&lt;/th&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;a name="baidusnap1"&gt;&lt;/a&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(timestamp, text)&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;text&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;把 timestamp 转换成 string&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(timestamp 'now','HH12:MI:SS')&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(int, text)&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;text&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;把 int4/int8 转换成 string&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(125, '999')&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(float, text)&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;text&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;把 float4/float8 转换成 string&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(125.8, '999D9')&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(numeric, text)&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;text&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;把 numeric 转换成 string&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(numeric '-125.8', '999D99S')&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;to_date(text, text)&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;date&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;把 string 转换成 date&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;to_date('05 Dec 2000', 'DD Mon YYYY')&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;to_timestamp(text, text)&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;date&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;把 string 转换成 timestamp&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;to_timestamp('05 Dec 2000', 'DD Mon YYYY')&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;to_number(text, text)&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;numeric&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;把 string 转换成 numeric&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;to_number('12,454.8-', '99G999D9S')&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;strong&gt;表 5-8. 用于 date/time 转换的模板&lt;/strong&gt; &lt;br /&gt;&amp;nbsp; &lt;/p&gt;&#xD;
&lt;table  border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;th valign="top" align="left"&gt;模板&lt;/th&gt;&#xD;
&lt;th valign="top" align="left"&gt;描述&lt;/th&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;HH&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;一天的小时数 (01-12)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;HH12&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;一天的小时数 (01-12)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;HH24&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;一天的小时数 (00-23)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;MI&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;分钟 (00-59)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;SS&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;秒 (00-59)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;SSSS&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;午夜后的秒 (0-86399)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;AM or A.M. or PM or P.M.&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;正午标识（大写）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;am or a.m. or pm or p.m.&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;正午标识（小写）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;Y,YYY&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;带逗号的年（4 和更多位）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;YYYY&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;年（4和更多位）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;YYY&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;年的后三位&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;YY&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;年的后两位&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;Y&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;年的最后一位&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;BC or B.C. or AD or A.D.&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;年标识（大写）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;bc or b.c. or ad or a.d.&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;年标识（小写）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;MONTH&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;全长大写月份名（9字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;Month&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;全长混合大小写月份名（9字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;month&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;全长小写月份名（9字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;MON&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;大写缩写月份名（3字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;Mon&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;缩写混合大小写月份名（3字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;mon&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;小写缩写月份名（3字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;MM&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;月份 (01-12)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;DAY&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;全长大写日期名（9字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;Day&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;全长混合大小写日期名（9字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;day&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;全长小写日期名（9字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;DY&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;缩写大写日期名（3字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;Dy&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;缩写混合大小写日期名（3字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;dy&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;缩写小写日期名（3字符）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;DDD&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;一年里的日子(001-366)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;DD&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;一个月里的日子(01-31)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;D&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;一周里的日子(1-7；SUN=1)&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;W&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;一个月里的周数&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;WW&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;一年里的周数&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;CC&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;世纪（2 位）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;J&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;Julian 日期（自公元前4712年1月1日来的日期）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;Q&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;季度&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;RM&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;罗马数字的月份（I-XII；I=JAN）－大写&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;rm&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;罗马数字的月份（I-XII；I=JAN）－小写&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;所有模板都都允许使用前缀和后缀修改器。模板里总是允许使用修改器。前缀　'&lt;tt&gt;FX&lt;/tt&gt;' 只是一个全局修改器。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;表 5-9. 用于日期/时间模板 &lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;() 的后缀&lt;/strong&gt; &lt;br /&gt;&amp;nbsp; &lt;/p&gt;&#xD;
&lt;table  border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;th valign="top" align="left"&gt;后缀&lt;/th&gt;&#xD;
&lt;th valign="top" align="left"&gt;描述&lt;/th&gt;&#xD;
&lt;th valign="top" align="left"&gt;例子&lt;/th&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;FM&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;填充模式前缀&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;FMMonth&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;TH&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;大写顺序数后缀&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;DDTH&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;th&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;小写顺序数后缀&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;DDTH&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;FX&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;固定模式全局选项（见下面）&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;FX Month DD Day&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;SP&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;拼写模式（还未实现）&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;DDSP&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;用法须知： &lt;/p&gt;&#xD;
&lt;ul&gt;&lt;li&gt;如果没有使用 &lt;tt&gt;FX&lt;/tt&gt; 选项，&lt;tt&gt;to_timestamp&lt;/tt&gt; 和 &lt;tt&gt;to_date&lt;/tt&gt; 忽略空白。&lt;tt&gt;FX&lt;/tt&gt; 必须做为模板里的第一个条目声明。&lt;/li&gt;&lt;li&gt;反斜杠（"&lt;span&gt;\&lt;/span&gt;"）必须用做双反斜杠（"&lt;span&gt;\\&lt;/span&gt;"），例如 &lt;span&gt;'\\HH\\MI\\SS'&lt;/span&gt;。&lt;/li&gt;&lt;li&gt;双引号（'"'）之间的字串被忽略并且不被分析。如果你想向输出写双引号，你必须在双引号前面放置一个双反斜杠（&lt;tt&gt;'\\'），&lt;span style="font-size: xx-small"&gt;例如 &lt;/span&gt;'\\"YYYY Month\\"'&lt;/tt&gt;。&lt;/li&gt;&lt;li&gt;&lt;tt&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;&lt;/tt&gt; 支持不带前导双引号（'"'）的文本，但是在双引号之间的任何字串会被迅速处理并且还保证不会被当作模板关键字解释（例如：&lt;tt&gt;'"Hello Year: "YYYY'&lt;/tt&gt;）。 &lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;表 5-10. 用于 &lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(&lt;em&gt;&lt;tt&gt;numeric&lt;/tt&gt;&lt;/em&gt;) 的模板&lt;/strong&gt; &lt;br /&gt;&amp;nbsp; &#xD;
&lt;table  border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;th valign="top" align="left"&gt;模板&lt;/th&gt;&#xD;
&lt;th valign="top" align="left"&gt;描述&lt;/th&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;9&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;带有指定位数的值&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;0&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;前导零的值&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;. （句点）&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;a name="baidusnap4"&gt;&lt;/a&gt;&lt;strong style="color: black; background-color: #ff66ff"&gt;小数&lt;/strong&gt;点&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;, （逗号）&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;分组（千）分隔符&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;PR&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;尖括号内负值&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;S&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;带负号的负值（使用本地化）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;L&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;货币符号（使用本地化）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;D&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #ff66ff"&gt;小数&lt;/strong&gt;点（使用本地化）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;G&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;分组分隔符（使用本地化）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;MI&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;在指明的位置的负号（如果数字 &amp;lt; 0）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;PL&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;在指明的位置的正号（如果数字 &amp;gt; 0）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;SG&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;在指明的位置的正/负号&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;RN&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;罗马数字（输入在 1 和 3999 之间）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;TH or th&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;转换成序数&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;V&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;移动 &lt;em&gt;&lt;tt&gt;n&lt;/tt&gt;&lt;/em&gt; 位（&lt;strong style="color: black; background-color: #ff66ff"&gt;小数&lt;/strong&gt;）（参阅注解）&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;EEEE&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;科学记数。现在不支持。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;用法须知： &lt;/p&gt;&#xD;
&lt;ul&gt;&lt;li&gt;使用 'SG'，'PL' 或 'MI' 的带符号字并不附着在数字上面；例如，&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-12, 'S9999') 生成 &lt;tt&gt;' -12'&lt;/tt&gt;，而 &lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-12, 'MI9999') 生成 &lt;tt&gt;'- 12'&lt;/tt&gt;。&lt;a name="baidusnap0"&gt;&lt;/a&gt;&lt;strong style="color: black; background-color: #ffff66"&gt;&lt;strong style="color: black; background-color: #ffff66"&gt;Oracle&lt;/strong&gt;&lt;/strong&gt; 里的实现不允许在 &lt;tt&gt;9&lt;/tt&gt; 前面使用 &lt;tt&gt;MI&lt;/tt&gt;，而是要求 &lt;tt&gt;9&lt;/tt&gt; 在 &lt;tt&gt;MI&lt;/tt&gt; 前面。&lt;/li&gt;&lt;li&gt;&lt;tt&gt;PL&lt;/tt&gt;，&lt;tt&gt;SG&lt;/tt&gt;，和 &lt;tt&gt;TH&lt;/tt&gt; 是&amp;nbsp;&lt;span &gt;Postgres&lt;/span&gt; 扩展。&lt;/li&gt;&lt;li&gt;&lt;tt&gt;9&lt;/tt&gt; 表明一个与在 &lt;tt&gt;9&lt;/tt&gt; 字串里面的一样的数字位数。如果没有可用的数字，那么使用一个空白（空格）。&lt;/li&gt;&lt;li&gt;&lt;tt&gt;TH&lt;/tt&gt; 不转换小于零的值，也不转换&lt;strong style="color: black; background-color: #ff66ff"&gt;小数&lt;/strong&gt;。&lt;tt&gt;TH&lt;/tt&gt; 是一个&amp;nbsp;&lt;span &gt;Postgres&lt;/span&gt; 扩展。&lt;/li&gt;&lt;li&gt;&lt;tt&gt;V&lt;/tt&gt; 方便地把输入值乘以 &lt;tt&gt;10^&lt;em&gt;n&lt;/em&gt;&lt;/tt&gt;，这里 &lt;em&gt;&lt;tt&gt;n&lt;/tt&gt;&lt;/em&gt; 是跟在 &lt;tt&gt;V&lt;/tt&gt; 后面的数字。&lt;tt&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;&lt;/tt&gt; 不支持把 &lt;tt&gt;V&lt;/tt&gt; 与一个&lt;strong style="color: black; background-color: #ff66ff"&gt;小数&lt;/strong&gt;点绑在一起使用（例如. "99.9V99" 是不允许的）。 &lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;表 5-11. &lt;tt&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;&lt;/tt&gt; 例子&lt;/strong&gt; &lt;br /&gt;&amp;nbsp; &#xD;
&lt;table  border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;th valign="top" align="left"&gt;输入&lt;/th&gt;&#xD;
&lt;th valign="top" align="left"&gt;输出&lt;/th&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(now(),'Day, HH12:MI:SS')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'Tuesday , 05:39:18'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(now(),'FMDay, HH12:MI:SS')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'Tuesday, 05:39:18'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-0.1,'99.99')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' -.10'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-0.1,'FM9.99')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'-.1'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(0.1,'0.9')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 0.1'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(12,'9990999.9')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 0012.0'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(12,'FM9990999.9')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'0012'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485,'999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 485'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-485,'999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'-485'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485,'9 9 9')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 4 8 5'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(1485,'9,999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 1,485'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(1485,'9G999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 1 485'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(148.5,'999.999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 148.500'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(148.5,'999D999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 148,500'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(3148.5,'9G999D999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 3 148,500'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-485,'999S')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'485-'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-485,'999MI')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'485-'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485,'999MI')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'485'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485,'PL999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'+485'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485,'SG999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'+485'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-485,'SG999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'-485'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-485,'9SG99')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'4-85'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(-485,'999PR')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'&amp;lt;485&amp;gt;'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485,'L999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'DM 485&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485,'RN')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' CDLXXXV'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485,'FMRN')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'CDLXXXV'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(5.2,'FMRN')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;V&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(482,'999th')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 482nd'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485, '"Good number:"999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'Good number: 485'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(485.8,'"Pre-decimal:"999" Post-decimal:" .999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;'Pre-decimal: 485 Post-decimal: .800'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(12,'99V999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 12000'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(12.4,'99V999')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 12400'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td valign="top"&gt;&lt;strong style="color: black; background-color: #a0ffff"&gt;to_char&lt;/strong&gt;(12.45, '99V9')&lt;/td&gt;&#xD;
&lt;td valign="top"&gt;&lt;tt&gt;' 125'&lt;/tt&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/1751653.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2010/06/04/1751653.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wuyisky/archive/2010/06/03/1750935.html</id><title type="text">ROLLUP和CUBE语句</title><summary type="text">Oracle的GROUP BY语句除了最基本的语法外，还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话，首先会对(A、B、C)进行GROUP BY，然后对(A、B)进行GROUP BY，然后是(A)进行GROUP BY，最后对全表进行GROUP BY操作。如果是GROUP BY CUBE(A, B, C)，则首先会对(A、B、C)进行GROUP BY，然后依次是(A、B)...</summary><published>2010-06-03T09:40:00Z</published><updated>2010-06-03T09:40:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2010/06/03/1750935.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2010/06/03/1750935.html"/><content type="html">Oracle的GROUP BY语句除了最基本的语法外，还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话，首先会对(A、B、C)进行GROUP BY，然后对(A、B)进行GROUP BY，然后是(A)进行GROUP BY，最后对全表进行GROUP BY操作。如果是GROUP BY CUBE(A, B, C)，则首先会对(A、B、C)进行GROUP BY，然后依次是(A、B)，(A、C)，(A)，(B、C)，(B)，(C)，最后对全表进行GROUP BY操作。 grouping_id()可以美化效果： &#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;Oracle的GROUP BY语句除了最基本的语法外，还支持ROLLUP和CUBE语句。&lt;/font&gt;&lt;/span /&gt; &#xD;
&lt;p&gt;&lt;p&gt;&lt;p style="text-indent: 24pt; 0cm: "&gt;&lt;p&gt;&lt;font size="2"&gt;除本文内容外，你还可参考：&lt;br /&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;SQL&amp;gt; create table t as select * from dba_indexes;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span&gt;&lt;font face="宋体" size="2"&gt;表已创建。&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;SQL&amp;gt; select index_type, status, count(*) from t group by index_type, status;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;INDEX_TYPE STATUS COUNT(*)&lt;br /&gt;--------------------------- -------- ----------&lt;br /&gt;LOB VALID 51&lt;br /&gt;NORMAL N/A 25&lt;br /&gt;NORMAL VALID 479&lt;br /&gt;CLUSTER VALID 11&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p style="text-indent: 24pt; 0cm: "&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;&lt;font size="2"&gt;下面来看看&lt;span lang="EN-US"&gt;ROLLUP和CUBE语句的执行结果。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;SQL&amp;gt; select index_type, status, count(*) from t group by rollup(index_type, status);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;INDEX_TYPE STATUS COUNT(*)&lt;br /&gt;--------------------------- -------- ----------&lt;br /&gt;LOB VALID 51&lt;br /&gt;LOB 51&lt;br /&gt;NORMAL N/A 25&lt;br /&gt;NORMAL VALID 479&lt;br /&gt;NORMAL 504&lt;br /&gt;CLUSTER VALID 11&lt;br /&gt;CLUSTER 11&lt;br /&gt;566&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span&gt;&lt;font face="宋体"&gt;&lt;font size="2"&gt;已选择&lt;span lang="EN-US"&gt;8行。&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;SQL&amp;gt; select index_type, status, count(*) from t group by cube(index_type, status);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;INDEX_TYPE STATUS COUNT(*)&lt;br /&gt;--------------------------- -------- ----------&lt;br /&gt;566&lt;br /&gt;N/A 25&lt;br /&gt;VALID 541&lt;br /&gt;LOB 51&lt;br /&gt;LOB VALID 51&lt;br /&gt;NORMAL 504&lt;br /&gt;NORMAL N/A 25&lt;br /&gt;NORMAL VALID 479&lt;br /&gt;CLUSTER 11&lt;br /&gt;CLUSTER VALID 11&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span&gt;&lt;font face="宋体"&gt;&lt;font size="2"&gt;已选择&lt;span lang="EN-US"&gt;10行。&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p style="text-indent: 24pt; 0cm: "&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;&lt;font size="2"&gt;查询结果不是很一目了然，下面通过&lt;span lang="EN-US"&gt;Oracle提供的函数GROUPING来整理一下查询结果。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;SQL&amp;gt; select grouping(index_type) g_ind, grouping(status) g_st, index_type, status, count(*)&lt;br /&gt;2 from t group by rollup(index_type, status) order by 1, 2;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;G_IND G_ST INDEX_TYPE STATUS COUNT(*)&lt;br /&gt;---------- ---------- --------------------------- -------- ----------&lt;br /&gt;0 0 LOB VALID 51&lt;br /&gt;0 0 NORMAL N/A 25&lt;br /&gt;0 0 NORMAL VALID 479&lt;br /&gt;0 0 CLUSTER VALID 11&lt;br /&gt;0 1 LOB 51&lt;br /&gt;0 1 NORMAL 504&lt;br /&gt;0 1 CLUSTER 11&lt;br /&gt;1 1 566&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span&gt;&lt;font face="宋体"&gt;&lt;font size="2"&gt;已选择&lt;span lang="EN-US"&gt;8行。&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p style="text-indent: 24pt; 0cm: "&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;&lt;font size="2"&gt;这个查询结果就直观多了，和不带&lt;span lang="EN-US"&gt;ROLLUP语句的GROUP BY相比，ROLLUP增加了对INDEX_TYPE的GROUP BY统计和对所有记录的GROUP BY统计。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p style="text-indent: 24pt; 0cm: "&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;&lt;font size="2"&gt;也就是说，如果是&lt;span lang="EN-US"&gt;ROLLUP(A, B, C)的话，首先会对(A、B、C)进行GROUP BY，然后对(A、B)进行GROUP BY，然后是(A)进行GROUP BY，最后对全表进行GROUP BY操作。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p style="text-indent: 24pt; 0cm: "&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;&lt;font size="2"&gt;下面看看&lt;span lang="EN-US"&gt;CUBE语句。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;SQL&amp;gt; select grouping(index_type) g_ind, grouping(status) g_st, index_type, status, count(*) &lt;br /&gt;2 from t group by cube(index_type, status) order by 1, 2;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;G_IND G_ST INDEX_TYPE STATUS COUNT(*)&lt;br /&gt;---------- ---------- --------------------------- -------- ----------&lt;br /&gt;0 0 LOB VALID 51&lt;br /&gt;0 0 NORMAL N/A 25&lt;br /&gt;0 0 NORMAL VALID 479&lt;br /&gt;0 0 CLUSTER VALID 11&lt;br /&gt;0 1 LOB 51&lt;br /&gt;0 1 NORMAL 504&lt;br /&gt;0 1 CLUSTER 11&lt;br /&gt;1 0 N/A 25&lt;br /&gt;1 0 VALID 541&lt;br /&gt;1 1 566&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span&gt;&lt;font face="宋体"&gt;&lt;font size="2"&gt;已选择&lt;span lang="EN-US"&gt;10行。&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p style="text-indent: 24pt; 0cm: "&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;&lt;font size="2"&gt;和&lt;span lang="EN-US"&gt;ROLLUP相比，CUBE又增加了对STATUS列的GROUP BY统计。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p style="text-indent: 24pt; 0cm: "&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;&lt;font size="2"&gt;如果是&lt;span lang="EN-US"&gt;GROUP BY CUBE(A, B, C)，则首先会对(A、B、C)进行GROUP BY，然后依次是(A、B)，(A、C)，(A)，(B、C)，(B)，(C)，最后对全表进行GROUP BY操作。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p style="text-indent: 24pt; 0cm: "&gt;&lt;span style="font-size: 12pt; font-family: 宋体"&gt;&lt;font size="2"&gt;除了使用&lt;span lang="EN-US"&gt;GROUPING函数，还可以使用GROUPING_ID来标识GROUP BY结果。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;SQL&amp;gt; select grouping_id(index_type, status) g_ind, index_type, status, count(*) &lt;br /&gt;2 from t group by rollup(index_type, status) order by 1;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;G_IND INDEX_TYPE STATUS COUNT(*)&lt;br /&gt;---------- --------------------------- -------- ----------&lt;br /&gt;0 LOB VALID 51&lt;br /&gt;0 NORMAL N/A 25&lt;br /&gt;0 NORMAL VALID 479&lt;br /&gt;0 CLUSTER VALID 11&lt;br /&gt;1 LOB 51&lt;br /&gt;1 NORMAL 504&lt;br /&gt;1 CLUSTER 11&lt;br /&gt;3 566&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span&gt;&lt;font face="宋体"&gt;&lt;font size="2"&gt;已选择&lt;span lang="EN-US"&gt;8行。&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;SQL&amp;gt; select grouping_id(index_type, status) g_ind, index_type, status, count(*) &lt;br /&gt;2 from t group by cube(index_type, status) order by 1;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="宋体" size="2"&gt;G_IND INDEX_TYPE STATUS COUNT(*)&lt;br /&gt;---------- --------------------------- -------- ----------&lt;br /&gt;0 LOB VALID 51&lt;br /&gt;0 NORMAL N/A 25&lt;br /&gt;0 NORMAL VALID 479&lt;br /&gt;0 CLUSTER VALID 11&lt;br /&gt;1 LOB 51&lt;br /&gt;1 NORMAL 504&lt;br /&gt;1 CLUSTER 11&lt;br /&gt;2 N/A 25&lt;br /&gt;2 VALID 541&lt;br /&gt;3 566&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span&gt;&lt;font face="宋体"&gt;&lt;font size="2"&gt;已选择&lt;span lang="EN-US"&gt;10行。&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font face="宋体"&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;strong&gt;grouping_id()可以美化效果：&lt;/strong&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font face="宋体"&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;select DECODE(GROUPING_ID(C1), 1, '合计', C1) D1,&lt;br /&gt;DECODE(GROUPING_ID(C1, C2), 1, '小计', C2) D2,&lt;br /&gt;DECODE(GROUPING_ID(C1, C2, C1 + C2), 1, '小计', C1 + C2) D3,&lt;br /&gt;count(*),&lt;br /&gt;GROUPING_ID(C1, C2, C1 + C2, C1 + 1, C2 + 1),&lt;br /&gt;GROUPING_ID(C1)&lt;br /&gt;from T2&lt;br /&gt;group by rollup(C1, C2, C1 + C2, C1 + 1, C2 + 1);&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font face="宋体"&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;===========================================================&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;1.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;报表合计专用的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Rollup&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;函数&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;销售报表&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;广州&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;1&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;月&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;2000&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;广州&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;2&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;月&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;2500&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;广州&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;4500&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;深圳&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;1&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;月&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;1000&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;深圳&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;2&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;月&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;2000&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;深圳&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;3000&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;所有地区&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;7500&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;以往的查询&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;SQL:&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial" size="2"&gt;Select&lt;span&gt; &lt;/span&gt;area,month,sum(money) from SaleOrder group by area,month&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;font size="2"&gt;然后广州，深圳的合计和所有地区合计都需要在程序里自行累计&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;1.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;其实可以使用如下&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;SQL:&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;Select area,month,sum(total_sale) from SaleOrder group by rollup(area,month)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;font size="2"&gt;就能产生和报表一模一样的纪录&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;2.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;如果&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;year&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;不想累加，可以写成&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;Select year,month,area,sum(total_sale) from SaleOrder group by year, rollup(month,area)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;另外&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Oracle 9i&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;还支持如下语法&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;Select year,month,area,sum(total_sale) from SaleOrder group by rollup((year,month),area)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;3.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;如果使用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Cube(area,month)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;而不是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;RollUp(area,month)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;，除了获得每个地区的合计之外，还将获得每个月份的合计，在报表最后显示。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;4.Grouping&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;让合计列更好读&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;RollUp&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在显示广州合计时，月份列为&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;NULL&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;，但更好的做法应该是显示为&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;所有月份&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Grouping&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;就是用来判断当前&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Column&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;是否是一个合计列，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;1&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;为&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;yes&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;，然后用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Decode&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;把它转为&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;所有月份&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Select&lt;span&gt; &lt;/span&gt;Decode(Grouping(area),1,'&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;所有地区&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;',area) area,&lt;span&gt; &lt;/span&gt;Decode(Grouping(month),1,'&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;所有月份&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;',month),&lt;span&gt; &lt;/span&gt;sum(money)&lt;span&gt; &lt;/span&gt;From SaleOrder&lt;span&gt; &lt;/span&gt;Group by RollUp(area,month);&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;2.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;对多级层次查询的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;start with.....connect by&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;比如人员组织&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;产品类别&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,Oracle&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;提供了很经典的方法&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;SELECT LEVEL, name, emp_id,manager_emp_id FROM employee START WITH manager_emp_id is null CONNECT BY PRIOR emp_id = manager_emp_id;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;上面的语句&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;demo&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;了全部的应用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,start with&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;指明从哪里开始遍历树&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;如果从根开始&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;那么它的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;manager&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;应该是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Null,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;如果从某个职员开始&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;可以写成&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;emp_id='11'&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;CONNECT BY &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;就是指明父子关系&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;注意&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;PRIOR&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;位置&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;另外还有一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;LEVEL&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;列&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;显示节点的层次&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;3.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;更多报表&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;分析决策功能&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;3.1 &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;分析功能的基本结构&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;分析功能&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;() over( partion&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;子句&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,order by&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;子句&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;窗口子句&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;概念上很难讲清楚&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;还是用例子说话比较好&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;.&lt;span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;3.2 Row_Number &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt; Rank, DENSE_Rank&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;用于选出&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Top 3 sales&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;这样的报表&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;当两个业务员可能有相同业绩时&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;就要使用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Rank&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Dense_Rank&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;比如&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;金额&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;RowNum&lt;span&gt; &lt;/span&gt;Rank&lt;span&gt; &lt;/span&gt;Dense_Rank&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;张三&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt; 4000&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;1&lt;span&gt; &lt;/span&gt;1&lt;span&gt; &lt;/span&gt;1&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;李四&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt; 3000&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;2&lt;span&gt; &lt;/span&gt;2&lt;span&gt; &lt;/span&gt;2&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;钱五&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt; 2000&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;3&lt;span&gt; &lt;/span&gt;3&lt;span&gt; &lt;/span&gt;3&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;孙六&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt; 2000&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;4&lt;span&gt; &lt;/span&gt;3&lt;span&gt; &lt;/span&gt;3&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;丁七&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt; 1000&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;元&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;5&lt;span&gt; &lt;/span&gt;5&lt;span&gt; &lt;/span&gt;4&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;这时&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;应该把并列第三的钱五和孙六都选进去&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;所以用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Ranking&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;功能比&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;RowNumber&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;保险&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;至于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Desnse&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;还是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Ranking&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;就看具体情况了。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;SELECT salesperson_id, SUM(tot_sales) sp_sales,&lt;span&gt; &lt;/span&gt;RANK( ) OVER (ORDER BY SUM(tot_sales) DESC) sales_rank&lt;span&gt; &lt;/span&gt;FROM orders&lt;span&gt; &lt;/span&gt;GROUP BY salesperson_id&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;3.3 NTILE &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;把纪录平分成甲乙丙丁四等&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;比如我想取得前&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;25%&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;的纪录&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;或者把&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;25%&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;的纪录当作同一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;level&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;平等对待&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;把另&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;25%&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;当作另一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Level&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;平等对待&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;SELECT cust_nbr, SUM(tot_sales) cust_sales,&lt;span&gt; &lt;/span&gt;NTILE(4) OVER (ORDER BY SUM(tot_sales) DESC) sales_quartile&lt;span&gt; &lt;/span&gt;FROM orders&lt;span&gt; &lt;/span&gt;GROUP BY cust_nbr&lt;span&gt; &lt;/span&gt;ORDER BY 3,2 DESC;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;NTITLE(4)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;把纪录以&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt; SUM(tot_sales)&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;排序分成&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;4&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;份&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;3.4 &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;辅助分析列和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Windows Function&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;报表除了基本事实数据外&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;总希望旁边多些全年总销量&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;到目前为止的累计销量&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;前后三个月的平均销量这样的列来参考&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;这种前后三个月的平均和到目前为止的累计销量就叫&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;windows function, &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;见下例&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;SELECT month, SUM(tot_sales) monthly_sales,&lt;span&gt; &lt;/span&gt;SUM(SUM(tot_sales)) OVER (ORDER BY month&lt;span&gt; &lt;/span&gt;ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) max_preceeding&lt;span&gt; &lt;/span&gt;FROM orders&lt;span&gt; &lt;/span&gt;GROUP BY month&lt;span&gt; &lt;/span&gt;ORDER BY month;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;SELECT month, SUM(tot_sales) monthly_sales,&lt;span&gt; &lt;/span&gt;AVG(SUM(tot_sales)) OVER (ORDER BY month&lt;span&gt; &lt;/span&gt;ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) rolling_avg&lt;span&gt; &lt;/span&gt;FROM orders&lt;span&gt; &lt;/span&gt;GROUP BY month&lt;span&gt; &lt;/span&gt;ORDER BY month;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Windows Function&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;的关键就是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Windows&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;子句的几个取值&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;1 PRECEDING &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;之前的一条记录&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;1 FOLLOWING &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;之后的一条记录&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;UNBOUNDED PRECEDING &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;之前的所有记录&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;CURRENT ROW &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;当前纪录&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;4.SubQuery&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;总结&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;SubQuery&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;天天用了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;理论上总结一下&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;.SubQuery &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;分三种&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;1.Noncorrelated &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;子查询&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;最普通的样式&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;2.Correlated Subqueries&lt;span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;把父查询的列拉到子查询里面去&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;头一回&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;cyt&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;教我的时候理解了半天&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;3.Inline View&lt;span&gt; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;也被当成最普通的样式用了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;然后&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;Noncorrelated &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;子查询又有三种情况&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;1.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;返回一行一列&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;where price &amp;lt; (select max(price) from goods )&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;2.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;返回多行一列&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;span&gt; &lt;/span&gt;where price&amp;gt;= ALL (select price from goods where type=2)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;or where NOT price&amp;lt; ANY(select price from goods where type=2)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span style="font-family: 宋体"&gt;最常用的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;IN&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;其实就是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;=ANY()&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;3.&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;返回多行多列&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;一次返回多列当然就节省了查询时间&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;UPDATE monthly_orders&lt;span&gt; &lt;/span&gt;SET (tot_orders, max_order_amt) =&lt;span&gt; &lt;/span&gt;(SELECT COUNT(*), MAX(sale_price)&lt;span&gt; &lt;/span&gt;FROM cust_order)&lt;span&gt; &lt;/span&gt;DELETE FROM line_item&lt;span&gt; &lt;/span&gt;WHERE (order_nbr, part_nbr) IN&lt;span&gt; &lt;/span&gt;(SELECT order_nbr, part_nbr FROM cust_order c)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial" size="2"&gt;========================================&lt;br /&gt;/*--------理解grouping sets&lt;br /&gt;select a, b, c, sum( d ) from t&lt;br /&gt;group by grouping sets ( a, b, c )&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial" size="2"&gt;等效于&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;font face="Arial" size="2"&gt;select * from (&lt;br /&gt;select a, null, null, sum( d ) from t group by a&lt;br /&gt;union all&lt;br /&gt;select null, b, null, sum( d ) from t group by b &lt;br /&gt;union all&lt;br /&gt;select null, null, c, sum( d ) from t group by c &lt;br /&gt;)&lt;br /&gt;*/&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/1750935.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2010/06/03/1750935.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wuyisky/archive/2010/06/03/1750933.html</id><title type="text">Oracle分析函数参考手册</title><summary type="text">Oracle从8.1.6开始提供分析函数，分析函数用于计算基于组的某种聚合值，它和聚合函数的不同之处是对于每个组返回多行，而聚合函数对于每个组只返回一行。 下面例子中使用的表来自Oracle自带的HR用户下的表，如果没有安装该用户，可以在SYS用户下运行$ORACLE_HOME/demo/schema/human_resources/hr_main.sql来创建。除本文内容外，你还可参考：ROLL...</summary><published>2010-06-03T09:38:00Z</published><updated>2010-06-03T09:38:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2010/06/03/1750933.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2010/06/03/1750933.html"/><content type="html">&lt;font size="2"&gt;Oracle从8.1.6开始提供分析函数，分析函数用于计算基于组的某种聚合值，它和聚合函数的不同之处是对于每个组返回多行，而聚合函数对于每个组只返回一行。&lt;/font&gt; &#xD;
&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;下面例子中使用的表来自Oracle自带的HR用户下的表，如果没有安装该用户，可以在SYS用户下运行$ORACLE_HOME/demo/schema/human_resources/hr_main.sql来创建。&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;除本文内容外，你还可参考：&lt;br /&gt;ROLLUP与CUBE &lt;a href="http://xsb.itpub.net/post/419/29159" target="_blank"&gt;http://xsb.itpub.net/post/419/29159&lt;/a&gt;&lt;br /&gt;&lt;font size="2"&gt;分析函数使用例子介绍：&lt;a href="http://xsb.itpub.net/post/419/44634" target="_blank"&gt;http://xsb.itpub.net/post/419/44634&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;本文如果未指明，缺省是在HR用户下运行例子。&lt;br /&gt;开窗函数的的理解：&lt;br /&gt;开窗函数指定了分析函数工作的数据窗口大小，这个数据窗口大小可能会随着行的变化而变化，举例如下：&lt;br /&gt;over（order by salary） 按照salary排序进行累计，order by是个默认的开窗函数&lt;br /&gt;over（partition by deptno）按照部门分区&lt;br /&gt;over（order by salary range between 50 preceding and 150 following）&lt;br /&gt;每行对应的数据窗口是之前行幅度值不超过50，之后行幅度值不超过150&lt;br /&gt;over（order by salary rows between 50 preceding and 150 following）&lt;br /&gt;每行对应的数据窗口是之前50行，之后150行&lt;br /&gt;over（order by salary rows between unbounded preceding and unbounded following）&lt;br /&gt;每行对应的数据窗口是从第一行到最后一行，等效：&lt;br /&gt;over（order by salary range between unbounded preceding and unbounded following）&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;主要参考资料：《expert one-on-one》 Tom Kyte 《Oracle9i SQL Reference》第6章&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;AVG &lt;br /&gt;功能描述：用于计算一个组和数据窗口内表达式的平均值。&lt;br /&gt;SAMPLE：下面的例子中列c_mavg计算员工表中每个员工的平均薪水报告，该平均值由当前员工和与之具有相同经理的前一个和后一个三者的平均数得来；&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT manager_id, last_name, hire_date, salary,&lt;br /&gt;AVG(salary) OVER (PARTITION BY manager_id ORDER BY hire_date &lt;br /&gt;ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg&lt;br /&gt;FROM employees;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;MANAGER_ID LAST_NAME HIRE_DATE SALARY C_MAVG&lt;br /&gt;---------- ------------------------- --------- ---------- ----------&lt;br /&gt;100 Kochhar 21-SEP-89 17000 17000&lt;br /&gt;100 De Haan 13-JAN-93 17000 15000&lt;br /&gt;100 Raphaely 07-DEC-94 11000 11966.6667&lt;br /&gt;100 Kaufling 01-MAY-95 7900 10633.3333&lt;br /&gt;100 Hartstein 17-FEB-96 13000 9633.33333&lt;br /&gt;100 Weiss 18-JUL-96 8000 11666.6667&lt;br /&gt;100 Russell 01-OCT-96 14000 11833.3333&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;CORR &lt;br /&gt;功能描述：返回一对表达式的相关系数，它是如下的缩写：&lt;br /&gt;COVAR_POP(expr1,expr2)/STDDEV_POP(expr1)*STDDEV_POP(expr2))&lt;br /&gt;从统计上讲，相关性是变量之间关联的强度，变量之间的关联意味着在某种程度&lt;br /&gt;上一个变量的值可由其它的值进行预测。通过返回一个-1~1之间的一个数, 相关&lt;br /&gt;系数给出了关联的强度，0表示不相关。&lt;br /&gt;SAMPLE：下例返回1998年月销售收入和月单位销售的关系的累积系数（本例在SH用户下运行）&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT t.calendar_month_number,&lt;br /&gt;CORR (SUM(s.amount_sold), SUM(s.quantity_sold))&lt;br /&gt;OVER (ORDER BY t.calendar_month_number) as CUM_CORR&lt;br /&gt;FROM sales s, times t&lt;br /&gt;WHERE s.time_id = t.time_id AND calendar_year = 1998&lt;br /&gt;GROUP BY t.calendar_month_number&lt;br /&gt;ORDER BY t.calendar_month_number;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;CALENDAR_MONTH_NUMBER CUM_CORR&lt;br /&gt;--------------------- ----------&lt;br /&gt;1&lt;br /&gt;2 1&lt;br /&gt;3 .994309382&lt;br /&gt;4 .852040875&lt;br /&gt;5 .846652204&lt;br /&gt;6 .871250628&lt;br /&gt;7 .910029803&lt;br /&gt;8 .917556399&lt;br /&gt;9 .920154356&lt;br /&gt;10 .86720251&lt;br /&gt;11 .844864765&lt;br /&gt;12 .903542662&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;COVAR_POP &lt;br /&gt;功能描述：返回一对表达式的总体协方差。&lt;br /&gt;SAMPLE：下例CUM_COVP返回定价和最小产品价格的累积总体协方差&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT product_id, supplier_id,&lt;br /&gt;COVAR_POP(list_price, min_price) &lt;br /&gt;OVER (ORDER BY product_id, supplier_id) AS CUM_COVP,&lt;br /&gt;COVAR_SAMP(list_price, min_price)&lt;br /&gt;OVER (ORDER BY product_id, supplier_id) AS CUM_COVS &lt;br /&gt;FROM product_information p&lt;br /&gt;WHERE category_id = 29&lt;br /&gt;ORDER BY product_id, supplier_id;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;PRODUCT_ID SUPPLIER_ID CUM_COVP CUM_COVS&lt;br /&gt;---------- ----------- ---------- ----------&lt;br /&gt;1774 103088 0&lt;br /&gt;1775 103087 1473.25 2946.5&lt;br /&gt;1794 103096 1702.77778 2554.16667&lt;br /&gt;1825 103093 1926.25 2568.33333&lt;br /&gt;2004 103086 1591.4 1989.25&lt;br /&gt;2005 103086 1512.5 1815&lt;br /&gt;2416 103088 1475.97959 1721.97619&lt;br /&gt;.&lt;br /&gt;.&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;COVAR_SAMP &lt;br /&gt;功能描述：返回一对表达式的样本协方差&lt;br /&gt;SAMPLE：下例CUM_COVS返回定价和最小产品价格的累积样本协方差&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT product_id, supplier_id,&lt;br /&gt;COVAR_POP(list_price, min_price) &lt;br /&gt;OVER (ORDER BY product_id, supplier_id) AS CUM_COVP,&lt;br /&gt;COVAR_SAMP(list_price, min_price)&lt;br /&gt;OVER (ORDER BY product_id, supplier_id) AS CUM_COVS &lt;br /&gt;FROM product_information p&lt;br /&gt;WHERE category_id = 29&lt;br /&gt;ORDER BY product_id, supplier_id;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;PRODUCT_ID SUPPLIER_ID CUM_COVP CUM_COVS&lt;br /&gt;---------- ----------- ---------- ----------&lt;br /&gt;1774 103088 0&lt;br /&gt;1775 103087 1473.25 2946.5&lt;br /&gt;1794 103096 1702.77778 2554.16667&lt;br /&gt;1825 103093 1926.25 2568.33333&lt;br /&gt;2004 103086 1591.4 1989.25&lt;br /&gt;2005 103086 1512.5 1815&lt;br /&gt;2416 103088 1475.97959 1721.97619&lt;br /&gt;.&lt;br /&gt;.&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;COUNT &lt;br /&gt;功能描述：对一组内发生的事情进行累积计数，如果指定*或一些非空常数，count将对所有行计数，如果指定一个表达式，count返回表达式非空赋值的计数，当有相同值出现时，这些相等的值都会被纳入被计算的值；可以使用DISTINCT来记录去掉一组中完全相同的数据后出现的行数。&lt;br /&gt;SAMPLE：下面例子中计算每个员工在按薪水排序中当前行附近薪水在[n-50,n+150]之间的行数，n表示当前行的薪水&lt;br /&gt;例如，Philtanker的薪水2200，排在他之前的行中薪水大于等于2200-50的有1行，排在他之后的行中薪水小于等于2200＋150的行没有，所以count计数值cnt3为2（包括自己当前行）；cnt2值相当于小于等于当前行的SALARY值的所有行数&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT last_name, salary, COUNT(*) OVER () AS cnt1,&lt;br /&gt;COUNT(*) OVER (ORDER BY salary) AS cnt2,&lt;br /&gt;COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING&lt;br /&gt;AND 150 FOLLOWING) AS cnt3 FROM employees;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME SALARY CNT1 CNT2 CNT3&lt;br /&gt;------------------------- ---------- ---------- ---------- ----------&lt;br /&gt;Olson 2100 107 1 3&lt;br /&gt;Markle 2200 107 3 2&lt;br /&gt;Philtanker 2200 107 3 2&lt;br /&gt;Landry 2400 107 5 8&lt;br /&gt;Gee 2400 107 5 8&lt;br /&gt;Colmenares 2500 107 11 10&lt;br /&gt;Patel 2500 107 11 10&lt;br /&gt;.&lt;br /&gt;.&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;CUME_DIST &lt;br /&gt;功能描述：计算一行在组中的相对位置，CUME_DIST总是返回大于0、小于或等于1的数，该数表示该行在N行中的位置。例如，在一个3行的组中，返回的累计分布值为1/3、2/3、3/3&lt;br /&gt;SAMPLE：下例中计算每个工种的员工按薪水排序依次累积出现的分布百分比&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT job_id, last_name, salary, CUME_DIST() &lt;br /&gt;OVER (PARTITION BY job_id ORDER BY salary) AS cume_dist&lt;br /&gt;FROM employees WHERE job_id LIKE 'PU%';&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;JOB_ID LAST_NAME SALARY CUME_DIST&lt;br /&gt;---------- ------------------------- ---------- ----------&lt;br /&gt;PU_CLERK Colmenares 2500 .2&lt;br /&gt;PU_CLERK Himuro 2600 .4&lt;br /&gt;PU_CLERK Tobias 2800 .6&lt;br /&gt;PU_CLERK Baida 2900 .8&lt;br /&gt;PU_CLERK Khoo 3100 1&lt;br /&gt;PU_MAN Raphaely 11000 1&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;DENSE_RANK &lt;br /&gt;功能描述：根据ORDER BY子句中表达式的值，从查询返回的每一行，计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序，然后给每一行赋一个号，从而形成一个序列，该序列从1开始，往后累加。每次ORDER BY表达式的值发生变化时，该序列也随之增加。有同样值的行得到同样的数字序号（认为null时相等的）。密集的序列返回的时没有间隔的数&lt;br /&gt;SAMPLE：下例中计算每个员工按部门分区再按薪水排序，依次出现的序列号（注意与RANK函数的区别）&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT d.department_id , e.last_name, e.salary, DENSE_RANK() &lt;br /&gt;OVER (PARTITION BY e.department_id ORDER BY e.salary) as drank&lt;br /&gt;FROM employees e, departments d&lt;br /&gt;WHERE e.department_id = d.department_id&lt;br /&gt;AND d.department_id IN ('60', '90'); &lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME SALARY DRANK&lt;br /&gt;------------- ------------------------- ---------- ----------&lt;br /&gt;60 Lorentz 4200 1&lt;br /&gt;60 Austin 4800 2&lt;br /&gt;60 Pataballa 4800 2&lt;br /&gt;60 Ernst 6000 3&lt;br /&gt;60 Hunold 9000 4&lt;br /&gt;90 Kochhar 17000 1&lt;br /&gt;90 De Haan 17000 1&lt;br /&gt;90 King 24000 2&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;FIRST &lt;br /&gt;功能描述：从DENSE_RANK返回的集合中取出排在最前面的一个值的行（可能多行，因为值可能相等），因此完整的语法需要在开始处加上一个集合函数以从中取出记录&lt;br /&gt;SAMPLE：下面例子中DENSE_RANK按部门分区，再按佣金commission_pct排序，FIRST取出佣金最低的对应的所有行，然后前面的MAX函数从这个集合中取出薪水最低的值；LAST取出佣金最高的对应的所有行，然后前面的MIN函数从这个集合中取出薪水最高的值&lt;br /&gt;SELECT last_name, department_id, salary,&lt;br /&gt;MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct)&lt;br /&gt;OVER (PARTITION BY department_id) "Worst",&lt;br /&gt;MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct)&lt;br /&gt;OVER (PARTITION BY department_id) "Best"&lt;br /&gt;FROM employees &lt;br /&gt;WHERE department_id in (20,80) &lt;br /&gt;ORDER BY department_id, salary;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME DEPARTMENT_ID SALARY Worst Best&lt;br /&gt;------------------------- ------------- ---------- ---------- ----------&lt;br /&gt;Fay 20 6000 6000 13000&lt;br /&gt;Hartstein 20 13000 6000 13000&lt;br /&gt;Kumar 80 6100 6100 14000&lt;br /&gt;Banda 80 6200 6100 14000&lt;br /&gt;Johnson 80 6200 6100 14000&lt;br /&gt;Ande 80 6400 6100 14000&lt;br /&gt;Lee 80 6800 6100 14000&lt;br /&gt;Tuvault 80 7000 6100 14000&lt;br /&gt;Sewall 80 7000 6100 14000&lt;br /&gt;Marvins 80 7200 6100 14000&lt;br /&gt;Bates 80 7300 6100 14000&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;FIRST_VALUE &lt;br /&gt;功能描述：返回组中数据窗口的第一个值。&lt;br /&gt;SAMPLE：下面例子计算按部门分区按薪水排序的数据窗口的第一个值对应的名字，如果薪水的第一个值有多个，则从多个对应的名字中取缺省排序的第一个名字&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT department_id, last_name, salary, FIRST_VALUE(last_name)&lt;br /&gt;OVER (PARTITION BY department_id ORDER BY salary ASC ) AS lowest_sal&lt;br /&gt;FROM employees &lt;br /&gt;WHERE department_id in(20,30);&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME SALARY LOWEST_SAL&lt;br /&gt;------------- ------------------------- ---------- --------------&lt;br /&gt;20 Fay 6000 Fay&lt;br /&gt;20 Hartstein 13000 Fay&lt;br /&gt;30 Colmenares 2500 Colmenares&lt;br /&gt;30 Himuro 2600 Colmenares&lt;br /&gt;30 Tobias 2800 Colmenares&lt;br /&gt;30 Baida 2900 Colmenares&lt;br /&gt;30 Khoo 3100 Colmenares&lt;br /&gt;30 Raphaely 11000 Colmenares&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;LAG &lt;br /&gt;功能描述：可以访问结果集中的其它行而不用进行自连接。它允许去处理游标，就好像游标是一个数组一样。在给定组中可参考当前行之前的行，这样就可以从组中与当前行一起选择以前的行。Offset是一个正整数，其默认值为1，若索引超出窗口的范围，就返回默认值（默认返回的是组中第一行），其相反的函数是LEAD&lt;br /&gt;SAMPLE：下面的例子中列prev_sal返回按hire_date排序的前1行的salary值&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT last_name, hire_date, salary,&lt;br /&gt;LAG(salary, 1, 0) OVER (ORDER BY hire_date) AS prev_sal&lt;br /&gt;FROM employees&lt;br /&gt;WHERE job_id = 'PU_CLERK';&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME HIRE_DATE SALARY PREV_SAL&lt;br /&gt;------------------------- ---------- ---------- ----------&lt;br /&gt;Khoo 18-5月 -95 3100 0&lt;br /&gt;Tobias 24-7月 -97 2800 3100&lt;br /&gt;Baida 24-12月-97 2900 2800&lt;br /&gt;Himuro 15-11月-98 2600 2900&lt;br /&gt;Colmenares 10-8月 -99 2500 2600&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;LAST &lt;br /&gt;功能描述：从DENSE_RANK返回的集合中取出排在最后面的一个值的行（可能多行，因为值可能相等），因此完整的语法需要在开始处加上一个集合函数以从中取出记录&lt;br /&gt;SAMPLE：下面例子中DENSE_RANK按部门分区，再按佣金commission_pct排序，FIRST取出佣金最低的对应的所有行，然后前面的MAX函数从这个集合中取出薪水最低的值；LAST取出佣金最高的对应的所有行，然后前面的MIN函数从这个集合中取出薪水最高的值&lt;br /&gt;SELECT last_name, department_id, salary,&lt;br /&gt;MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct)&lt;br /&gt;OVER (PARTITION BY department_id) "Worst",&lt;br /&gt;MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct)&lt;br /&gt;OVER (PARTITION BY department_id) "Best"&lt;br /&gt;FROM employees &lt;br /&gt;WHERE department_id in (20,80) &lt;br /&gt;ORDER BY department_id, salary;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME DEPARTMENT_ID SALARY Worst Best&lt;br /&gt;------------------------- ------------- ---------- ---------- ----------&lt;br /&gt;Fay 20 6000 6000 13000&lt;br /&gt;Hartstein 20 13000 6000 13000&lt;br /&gt;Kumar 80 6100 6100 14000&lt;br /&gt;Banda 80 6200 6100 14000&lt;br /&gt;Johnson 80 6200 6100 14000&lt;br /&gt;Ande 80 6400 6100 14000&lt;br /&gt;Lee 80 6800 6100 14000&lt;br /&gt;Tuvault 80 7000 6100 14000&lt;br /&gt;Sewall 80 7000 6100 14000&lt;br /&gt;Marvins 80 7200 6100 14000&lt;br /&gt;Bates 80 7300 6100 14000&lt;br /&gt;.&lt;br /&gt;LAST_VALUE &lt;br /&gt;功能描述：返回组中数据窗口的最后一个值。&lt;br /&gt;SAMPLE：下面例子计算按部门分区按薪水排序的数据窗口的最后一个值对应的名字，如果薪水的最后一个值有多个，则从多个对应的名字中取缺省排序的最后一个名字&lt;br /&gt;SELECT department_id, last_name, salary, LAST_VALUE(last_name)&lt;br /&gt;OVER(PARTITION BY department_id ORDER BY salary) AS highest_sal&lt;br /&gt;FROM employees &lt;br /&gt;WHERE department_id in(20,30);&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME SALARY HIGHEST_SAL&lt;br /&gt;------------- ------------------------- ---------- ------------&lt;br /&gt;20 Fay 6000 Fay&lt;br /&gt;20 Hartstein 13000 Hartstein&lt;br /&gt;30 Colmenares 2500 Colmenares&lt;br /&gt;30 Himuro 2600 Himuro&lt;br /&gt;30 Tobias 2800 Tobias&lt;br /&gt;30 Baida 2900 Baida&lt;br /&gt;30 Khoo 3100 Khoo&lt;br /&gt;30 Raphaely 11000 Raphaely&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;LEAD &lt;br /&gt;功能描述：LEAD与LAG相反，LEAD可以访问组中当前行之后的行。Offset是一个正整数，其默认值为1，若索引超出窗口的范围，就返回默认值（默认返回的是组中第一行）&lt;br /&gt;SAMPLE：下面的例子中每行的"NextHired"返回按hire_date排序的下一行的hire_date值&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT last_name, hire_date, &lt;br /&gt;LEAD(hire_date, 1) OVER (ORDER BY hire_date) AS "NextHired" &lt;br /&gt;FROM employees WHERE department_id = 30;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME HIRE_DATE NextHired&lt;br /&gt;------------------------- --------- ---------&lt;br /&gt;Raphaely 07-DEC-94 18-MAY-95&lt;br /&gt;Khoo 18-MAY-95 24-JUL-97&lt;br /&gt;Tobias 24-JUL-97 24-DEC-97&lt;br /&gt;Baida 24-DEC-97 15-NOV-98&lt;br /&gt;Himuro 15-NOV-98 10-AUG-99&lt;br /&gt;Colmenares 10-AUG-99&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;MAX &lt;br /&gt;功能描述：在一个组中的数据窗口中查找表达式的最大值。&lt;br /&gt;SAMPLE：下面例子中dept_max返回当前行所在部门的最大薪水值&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT department_id, last_name, salary, &lt;br /&gt;MAX(salary) OVER (PARTITION BY department_id) AS dept_max&lt;br /&gt;FROM employees WHERE department_id in (10,20,30);&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME SALARY DEPT_MAX&lt;br /&gt;------------- ------------------------- ---------- ----------&lt;br /&gt;10 Whalen 4400 4400&lt;br /&gt;20 Hartstein 13000 13000&lt;br /&gt;20 Fay 6000 13000&lt;br /&gt;30 Raphaely 11000 11000&lt;br /&gt;30 Khoo 3100 11000&lt;br /&gt;30 Baida 2900 11000&lt;br /&gt;30 Tobias 2800 11000&lt;br /&gt;30 Himuro 2600 11000&lt;br /&gt;30 Colmenares 2500 11000&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;MIN &lt;br /&gt;功能描述：在一个组中的数据窗口中查找表达式的最小值。&lt;br /&gt;SAMPLE：下面例子中dept_min返回当前行所在部门的最小薪水值&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT department_id, last_name, salary, &lt;br /&gt;MIN(salary) OVER (PARTITION BY department_id) AS dept_min&lt;br /&gt;FROM employees WHERE department_id in (10,20,30);&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME SALARY DEPT_MIN&lt;br /&gt;------------- ------------------------- ---------- ----------&lt;br /&gt;10 Whalen 4400 4400&lt;br /&gt;20 Hartstein 13000 6000&lt;br /&gt;20 Fay 6000 6000&lt;br /&gt;30 Raphaely 11000 2500&lt;br /&gt;30 Khoo 3100 2500&lt;br /&gt;30 Baida 2900 2500&lt;br /&gt;30 Tobias 2800 2500&lt;br /&gt;30 Himuro 2600 2500&lt;br /&gt;30 Colmenares 2500 2500&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;NTILE &lt;br /&gt;功能描述：将一个组分为"表达式"的散列表示，例如，如果表达式=4，则给组中的每一行分配一个数（从1到4），如果组中有20行，则给前5行分配1，给下5行分配2等等。如果组的基数不能由表达式值平均分开，则对这些行进行分配时，组中就没有任何percentile的行数比其它percentile的行数超过一行，最低的percentile是那些拥有额外行的percentile。例如，若表达式=4，行数=21，则percentile=1的有5行，percentile=2的有5行等等。&lt;br /&gt;SAMPLE：下例中把6行数据分为4份&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT last_name, salary, &lt;br /&gt;NTILE(4) OVER (ORDER BY salary DESC) AS quartile FROM employees&lt;br /&gt;WHERE department_id = 100;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME SALARY QUARTILE&lt;br /&gt;------------------------- ---------- ----------&lt;br /&gt;Greenberg 12000 1&lt;br /&gt;Faviet 9000 1&lt;br /&gt;Chen 8200 2&lt;br /&gt;Urman 7800 2&lt;br /&gt;Sciarra 7700 3&lt;br /&gt;Popp 6900 4&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;PERCENT_RANK &lt;br /&gt;功能描述：和CUME_DIST（累积分配）函数类似，对于一个组中给定的行来说，在计算那行的序号时，先减1，然后除以n-1（n为组中所有的行数）。该函数总是返回0～1（包括1）之间的数。&lt;br /&gt;SAMPLE：下例中如果Khoo的salary为2900，则pr值为0.6，因为RANK函数对于等值的返回序列值是一样的&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT department_id, last_name, salary, &lt;br /&gt;PERCENT_RANK() &lt;br /&gt;OVER (PARTITION BY department_id ORDER BY salary) AS pr&lt;br /&gt;FROM employees&lt;br /&gt;WHERE department_id &amp;lt; 50&lt;br /&gt;ORDER BY department_id,salary;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME SALARY PR&lt;br /&gt;------------- ------------------------- ---------- ----------&lt;br /&gt;10 Whalen 4400 0&lt;br /&gt;20 Fay 6000 0&lt;br /&gt;20 Hartstein 13000 1&lt;br /&gt;30 Colmenares 2500 0&lt;br /&gt;30 Himuro 2600 0.2&lt;br /&gt;30 Tobias 2800 0.4&lt;br /&gt;30 Baida 2900 0.6&lt;br /&gt;30 Khoo 3100 0.8&lt;br /&gt;30 Raphaely 11000 1&lt;br /&gt;40 Mavris 6500 0&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;PERCENTILE_CONT &lt;br /&gt;功能描述：返回一个与输入的分布百分比值相对应的数据值，分布百分比的计算方法见函数PERCENT_RANK，如果没有正好对应的数据值，就通过下面算法来得到值：&lt;br /&gt;RN = 1+ (P*(N-1)) 其中P是输入的分布百分比值，N是组内的行数&lt;br /&gt;CRN = CEIL(RN) FRN = FLOOR(RN)&lt;br /&gt;if (CRN = FRN = RN) then &lt;br /&gt;(value of expression from row at RN)&lt;br /&gt;else&lt;br /&gt;(CRN - RN) * (value of expression for row at FRN) +&lt;br /&gt;(RN - FRN) * (value of expression for row at CRN)&lt;br /&gt;注意：本函数与PERCENTILE_DISC的区别在找不到对应的分布值时返回的替代值的计算方法不同&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SAMPLE：在下例中，对于部门60的Percentile_Cont值计算如下：&lt;br /&gt;P=0.7 N=5 RN =1+ (P*(N-1)=1+(0.7*(5-1))=3.8 CRN = CEIL(3.8)=4 &lt;br /&gt;FRN = FLOOR(3.8)=3 &lt;br /&gt;（4 - 3.8）* 4800 + (3.8 - 3) * 6000 = 5760&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT last_name, salary, department_id,&lt;br /&gt;PERCENTILE_CONT(0.7) WITHIN GROUP (ORDER BY salary) &lt;br /&gt;OVER (PARTITION BY department_id) "Percentile_Cont",&lt;br /&gt;PERCENT_RANK() &lt;br /&gt;OVER (PARTITION BY department_id ORDER BY salary) "Percent_Rank"&lt;br /&gt;FROM employees WHERE department_id IN (30, 60);&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME SALARY DEPARTMENT_ID Percentile_Cont Percent_Rank&lt;br /&gt;------------------------- ---------- ------------- --------------- ------------&lt;br /&gt;Colmenares 2500 30 3000 0&lt;br /&gt;Himuro 2600 30 3000 0.2&lt;br /&gt;Tobias 2800 30 3000 0.4&lt;br /&gt;Baida 2900 30 3000 0.6&lt;br /&gt;Khoo 3100 30 3000 0.8&lt;br /&gt;Raphaely 11000 30 3000 1&lt;br /&gt;Lorentz 4200 60 5760 0&lt;br /&gt;Austin 4800 60 5760 0.25&lt;br /&gt;Pataballa 4800 60 5760 0.25&lt;br /&gt;Ernst 6000 60 5760 0.75&lt;br /&gt;Hunold 9000 60 5760 1&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;PERCENTILE_DISC &lt;br /&gt;功能描述：返回一个与输入的分布百分比值相对应的数据值，分布百分比的计算方法见函数CUME_DIST，如果没有正好对应的数据值，就取大于该分布值的下一个值。&lt;br /&gt;注意：本函数与PERCENTILE_CONT的区别在找不到对应的分布值时返回的替代值的计算方法不同&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SAMPLE：下例中0.7的分布值在部门30中没有对应的Cume_Dist值，所以就取下一个分布值0.83333333所对应的SALARY来替代&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT last_name, salary, department_id,&lt;br /&gt;PERCENTILE_DISC(0.7) WITHIN GROUP (ORDER BY salary )&lt;br /&gt;OVER (PARTITION BY department_id) "Percentile_Disc",&lt;br /&gt;CUME_DIST() OVER (PARTITION BY department_id ORDER BY salary) "Cume_Dist"&lt;br /&gt;FROM employees &lt;br /&gt;WHERE department_id in (30, 60);&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME SALARY DEPARTMENT_ID Percentile_Disc Cume_Dist&lt;br /&gt;------------------------- ---------- ------------- --------------- ----------&lt;br /&gt;Colmenares 2500 30 3100 .166666667&lt;br /&gt;Himuro 2600 30 3100 .333333333&lt;br /&gt;Tobias 2800 30 3100 .5&lt;br /&gt;Baida 2900 30 3100 .666666667&lt;br /&gt;Khoo 3100 30 3100 .833333333&lt;br /&gt;Raphaely 11000 30 3100 1&lt;br /&gt;Lorentz 4200 60 6000 .2&lt;br /&gt;Austin 4800 60 6000 .6&lt;br /&gt;Pataballa 4800 60 6000 .6&lt;br /&gt;Ernst 6000 60 6000 .8&lt;br /&gt;Hunold 9000 60 6000 1&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;RANK &lt;br /&gt;功能描述：根据ORDER BY子句中表达式的值，从查询返回的每一行，计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序，然后给每一行赋一个号，从而形成一个序列，该序列从1开始，往后累加。每次ORDER BY表达式的值发生变化时，该序列也随之增加。有同样值的行得到同样的数字序号（认为null时相等的）。然而，如果两行的确得到同样的排序，则序数将随后跳跃。若两行序数为1，则没有序数2，序列将给组中的下一行分配值3，DENSE_RANK则没有任何跳跃。&lt;br /&gt;SAMPLE：下例中计算每个员工按部门分区再按薪水排序，依次出现的序列号（注意与DENSE_RANK函数的区别）&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT d.department_id , e.last_name, e.salary, RANK() &lt;br /&gt;OVER (PARTITION BY e.department_id ORDER BY e.salary) as drank&lt;br /&gt;FROM employees e, departments d&lt;br /&gt;WHERE e.department_id = d.department_id&lt;br /&gt;AND d.department_id IN ('60', '90');&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME SALARY DRANK&lt;br /&gt;------------- ------------------------- ---------- ----------&lt;br /&gt;60 Lorentz 4200 1&lt;br /&gt;60 Austin 4800 2&lt;br /&gt;60 Pataballa 4800 2&lt;br /&gt;60 Ernst 6000 4&lt;br /&gt;60 Hunold 9000 5&lt;br /&gt;90 Kochhar 17000 1&lt;br /&gt;90 De Haan 17000 1&lt;br /&gt;90 King 24000 3&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;RATIO_TO_REPORT &lt;br /&gt;功能描述：该函数计算expression/(sum(expression))的值，它给出相对于总数的百分比，即当前行对sum(expression)的贡献。&lt;br /&gt;SAMPLE：下例计算每个员工的工资占该类员工总工资的百分比&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT last_name, salary, RATIO_TO_REPORT(salary) OVER () AS rr&lt;br /&gt;FROM employees&lt;br /&gt;WHERE job_id = 'PU_CLERK';&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME SALARY RR&lt;br /&gt;------------------------- ---------- ----------&lt;br /&gt;Khoo 3100 .223021583&lt;br /&gt;Baida 2900 .208633094&lt;br /&gt;Tobias 2800 .201438849&lt;br /&gt;Himuro 2600 .18705036&lt;br /&gt;Colmenares 2500 .179856115&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;REGR_ (Linear Regression) Functions &lt;br /&gt;功能描述：这些线性回归函数适合最小二乘法回归线，有9个不同的回归函数可使用。&lt;br /&gt;REGR_SLOPE：返回斜率，等于COVAR_POP(expr1, expr2) / VAR_POP(expr2)&lt;br /&gt;REGR_INTERCEPT：返回回归线的y截距，等于&lt;br /&gt;AVG(expr1) - REGR_SLOPE(expr1, expr2) * AVG(expr2)&lt;br /&gt;REGR_COUNT：返回用于填充回归线的非空数字对的数目&lt;br /&gt;REGR_R2：返回回归线的决定系数，计算式为：&lt;br /&gt;If VAR_POP(expr2) = 0 then return NULL&lt;br /&gt;If VAR_POP(expr1) = 0 and VAR_POP(expr2) != 0 then return 1&lt;br /&gt;If VAR_POP(expr1) &amp;gt; 0 and VAR_POP(expr2 != 0 then &lt;br /&gt;return POWER(CORR(expr1,expr),2)&lt;br /&gt;REGR_AVGX：计算回归线的自变量(expr2)的平均值，去掉了空对(expr1, expr2)后，等于AVG(expr2)&lt;br /&gt;REGR_AVGY：计算回归线的应变量(expr1)的平均值，去掉了空对(expr1, expr2)后，等于AVG(expr1)&lt;br /&gt;REGR_SXX： 返回值等于REGR_COUNT(expr1, expr2) * VAR_POP(expr2)&lt;br /&gt;REGR_SYY： 返回值等于REGR_COUNT(expr1, expr2) * VAR_POP(expr1)&lt;br /&gt;REGR_SXY: 返回值等于REGR_COUNT(expr1, expr2) * COVAR_POP(expr1, expr2)&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;（下面的例子都是在SH用户下完成的）&lt;br /&gt;SAMPLE 1：下例计算1998年最后三个星期中两种产品（260和270）在周末的销售量中已开发票数量和总数量的累积斜率和回归线的截距&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT t.fiscal_month_number "Month", t.day_number_in_month "Day", &lt;br /&gt;REGR_SLOPE(s.amount_sold, s.quantity_sold) &lt;br /&gt;OVER (ORDER BY t.fiscal_month_desc, t.day_number_in_month) AS CUM_SLOPE,&lt;br /&gt;REGR_INTERCEPT(s.amount_sold, s.quantity_sold) &lt;br /&gt;OVER (ORDER BY t.fiscal_month_desc, t.day_number_in_month) AS CUM_ICPT &lt;br /&gt;FROM sales s, times t&lt;br /&gt;WHERE s.time_id = t.time_id &lt;br /&gt;AND s.prod_id IN (270, 260)&lt;br /&gt;AND t.fiscal_year=1998 &lt;br /&gt;AND t.fiscal_week_number IN (50, 51, 52)&lt;br /&gt;AND t.day_number_in_week IN (6,7)&lt;br /&gt;ORDER BY t.fiscal_month_desc, t.day_number_in_month;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;Month Day CUM_SLOPE CUM_ICPT&lt;br /&gt;---------- ---------- ---------- ----------&lt;br /&gt;12 12 -68 1872&lt;br /&gt;12 12 -68 1872&lt;br /&gt;12 13 -20.244898 1254.36735&lt;br /&gt;12 13 -20.244898 1254.36735&lt;br /&gt;12 19 -18.826087 1287&lt;br /&gt;12 20 62.4561404 125.28655&lt;br /&gt;12 20 62.4561404 125.28655&lt;br /&gt;12 20 62.4561404 125.28655&lt;br /&gt;12 20 62.4561404 125.28655&lt;br /&gt;12 26 67.2658228 58.9712313&lt;br /&gt;12 26 67.2658228 58.9712313&lt;br /&gt;12 27 37.5245541 284.958221&lt;br /&gt;12 27 37.5245541 284.958221&lt;br /&gt;12 27 37.5245541 284.958221&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SAMPLE 2：下例计算1998年4月每天的累积交易数量&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT UNIQUE t.day_number_in_month,&lt;br /&gt;REGR_COUNT(s.amount_sold, s.quantity_sold) &lt;br /&gt;OVER (PARTITION BY t.fiscal_month_number ORDER BY t.day_number_in_month)&lt;br /&gt;"Regr_Count"&lt;br /&gt;FROM sales s, times t&lt;br /&gt;WHERE s.time_id = t.time_id &lt;br /&gt;AND t.fiscal_year = 1998 AND t.fiscal_month_number = 4;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DAY_NUMBER_IN_MONTH Regr_Count&lt;br /&gt;------------------- ----------&lt;br /&gt;1 825&lt;br /&gt;2 1650&lt;br /&gt;3 2475&lt;br /&gt;4 3300&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;26 21450&lt;br /&gt;30 22200&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SAMPLE 3：下例计算1998年每月销售量中已开发票数量和总数量的累积回归线决定系数&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT t.fiscal_month_number,&lt;br /&gt;REGR_R2(SUM(s.amount_sold), SUM(s.quantity_sold))&lt;br /&gt;OVER (ORDER BY t.fiscal_month_number) "Regr_R2"&lt;br /&gt;FROM sales s, times t&lt;br /&gt;WHERE s.time_id = t.time_id&lt;br /&gt;AND t.fiscal_year = 1998&lt;br /&gt;GROUP BY t.fiscal_month_number&lt;br /&gt;ORDER BY t.fiscal_month_number;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;FISCAL_MONTH_NUMBER Regr_R2&lt;br /&gt;------------------- ----------&lt;br /&gt;1&lt;br /&gt;2 1&lt;br /&gt;3 .927372984&lt;br /&gt;4 .807019972&lt;br /&gt;5 .932745567&lt;br /&gt;6 .94682861&lt;br /&gt;7 .965342011&lt;br /&gt;8 .955768075&lt;br /&gt;9 .959542618&lt;br /&gt;10 .938618575&lt;br /&gt;11 .880931415&lt;br /&gt;12 .882769189&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SAMPLE 4：下例计算1998年12月最后两周产品260的销售量中已开发票数量和总数量的累积平均值&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT t.day_number_in_month,&lt;br /&gt;REGR_AVGY(s.amount_sold, s.quantity_sold)&lt;br /&gt;OVER (ORDER BY t.fiscal_month_desc, t.day_number_in_month)&lt;br /&gt;"Regr_AvgY",&lt;br /&gt;REGR_AVGX(s.amount_sold, s.quantity_sold)&lt;br /&gt;OVER (ORDER BY t.fiscal_month_desc, t.day_number_in_month)&lt;br /&gt;"Regr_AvgX"&lt;br /&gt;FROM sales s, times t&lt;br /&gt;WHERE s.time_id = t.time_id &lt;br /&gt;AND s.prod_id = 260&lt;br /&gt;AND t.fiscal_month_desc = '1998-12'&lt;br /&gt;AND t.fiscal_week_number IN (51, 52)&lt;br /&gt;ORDER BY t.day_number_in_month;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DAY_NUMBER_IN_MONTH Regr_AvgY Regr_AvgX&lt;br /&gt;------------------- ---------- ----------&lt;br /&gt;14 882 24.5&lt;br /&gt;14 882 24.5&lt;br /&gt;15 801 22.25&lt;br /&gt;15 801 22.25&lt;br /&gt;16 777.6 21.6&lt;br /&gt;18 642.857143 17.8571429&lt;br /&gt;18 642.857143 17.8571429&lt;br /&gt;20 589.5 16.375&lt;br /&gt;21 544 15.1111111&lt;br /&gt;22 592.363636 16.4545455&lt;br /&gt;22 592.363636 16.4545455&lt;br /&gt;24 553.846154 15.3846154&lt;br /&gt;24 553.846154 15.3846154&lt;br /&gt;26 522 14.5&lt;br /&gt;27 578.4 16.0666667&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SAMPLE 5：下例计算产品260和270在1998年2月周末销售量中已开发票数量和总数量的累积REGR_SXY, REGR_SXX, and REGR_SYY统计值&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT t.day_number_in_month,&lt;br /&gt;REGR_SXY(s.amount_sold, s.quantity_sold)&lt;br /&gt;OVER (ORDER BY t.fiscal_year, t.fiscal_month_desc) "Regr_sxy",&lt;br /&gt;REGR_SYY(s.amount_sold, s.quantity_sold)&lt;br /&gt;OVER (ORDER BY t.fiscal_year, t.fiscal_month_desc) "Regr_syy",&lt;br /&gt;REGR_SXX(s.amount_sold, s.quantity_sold)&lt;br /&gt;OVER (ORDER BY t.fiscal_year, t.fiscal_month_desc) "Regr_sxx"&lt;br /&gt;FROM sales s, times t&lt;br /&gt;WHERE s.time_id = t.time_id &lt;br /&gt;AND prod_id IN (270, 260)&lt;br /&gt;AND t.fiscal_month_desc = '1998-02'&lt;br /&gt;AND t.day_number_in_week IN (6,7)&lt;br /&gt;ORDER BY t.day_number_in_month;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DAY_NUMBER_IN_MONTH Regr_sxy Regr_syy Regr_sxx&lt;br /&gt;------------------- ---------- ---------- ----------&lt;br /&gt;1 18870.4 2116198.4 258.4&lt;br /&gt;1 18870.4 2116198.4 258.4&lt;br /&gt;1 18870.4 2116198.4 258.4&lt;br /&gt;1 18870.4 2116198.4 258.4&lt;br /&gt;7 18870.4 2116198.4 258.4&lt;br /&gt;8 18870.4 2116198.4 258.4&lt;br /&gt;14 18870.4 2116198.4 258.4&lt;br /&gt;15 18870.4 2116198.4 258.4&lt;br /&gt;21 18870.4 2116198.4 258.4&lt;br /&gt;22 18870.4 2116198.4 258.4&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;ROW_NUMBER &lt;br /&gt;功能描述：返回有序组中一行的偏移量，从而可用于按特定标准排序的行号。&lt;br /&gt;SAMPLE：下例返回每个员工再在每个部门中按员工号排序后的顺序号&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT department_id, last_name, employee_id, ROW_NUMBER()&lt;br /&gt;OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id&lt;br /&gt;FROM employees&lt;br /&gt;WHERE department_id &amp;lt; 50;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME EMPLOYEE_ID EMP_ID&lt;br /&gt;------------- ------------------------- ----------- ----------&lt;br /&gt;10 Whalen 200 1&lt;br /&gt;20 Hartstein 201 1&lt;br /&gt;20 Fay 202 2&lt;br /&gt;30 Raphaely 114 1&lt;br /&gt;30 Khoo 115 2&lt;br /&gt;30 Baida 116 3&lt;br /&gt;30 Tobias 117 4&lt;br /&gt;30 Himuro 118 5&lt;br /&gt;30 Colmenares 119 6&lt;br /&gt;40 Mavris 203 1&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;STDDEV &lt;br /&gt;功能描述：计算当前行关于组的标准偏离。（Standard Deviation）&lt;br /&gt;SAMPLE：下例返回部门30按雇佣日期排序的薪水值的累积标准偏离&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT last_name, hire_date,salary, &lt;br /&gt;STDDEV(salary) OVER (ORDER BY hire_date) "StdDev"&lt;br /&gt;FROM employees &lt;br /&gt;WHERE department_id = 30;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME HIRE_DATE SALARY StdDev&lt;br /&gt;------------------------- ---------- ---------- ----------&lt;br /&gt;Raphaely 07-12月-94 11000 0&lt;br /&gt;Khoo 18-5月 -95 3100 5586.14357&lt;br /&gt;Tobias 24-7月 -97 2800 4650.0896&lt;br /&gt;Baida 24-12月-97 2900 4035.26125&lt;br /&gt;Himuro 15-11月-98 2600 3649.2465&lt;br /&gt;Colmenares 10-8月 -99 2500 3362.58829&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;STDDEV_POP &lt;br /&gt;功能描述：该函数计算总体标准偏离，并返回总体变量的平方根，其返回值与VAR_POP函数的平方根相同。（Standard Deviation－Population）&lt;br /&gt;SAMPLE：下例返回部门20、30、60的薪水值的总体标准偏差&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT department_id, last_name, salary, &lt;br /&gt;STDDEV_POP(salary) OVER (PARTITION BY department_id) AS pop_std&lt;br /&gt;FROM employees&lt;br /&gt;WHERE department_id in (20,30,60);&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME SALARY POP_STD&lt;br /&gt;------------- ------------------------- ---------- ----------&lt;br /&gt;20 Hartstein 13000 3500&lt;br /&gt;20 Fay 6000 3500&lt;br /&gt;30 Raphaely 11000 3069.6091&lt;br /&gt;30 Khoo 3100 3069.6091&lt;br /&gt;30 Baida 2900 3069.6091&lt;br /&gt;30 Colmenares 2500 3069.6091&lt;br /&gt;30 Himuro 2600 3069.6091&lt;br /&gt;30 Tobias 2800 3069.6091&lt;br /&gt;60 Hunold 9000 1722.32401&lt;br /&gt;60 Ernst 6000 1722.32401&lt;br /&gt;60 Austin 4800 1722.32401&lt;br /&gt;60 Pataballa 4800 1722.32401&lt;br /&gt;60 Lorentz 4200 1722.32401&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;STDDEV_SAMP &lt;br /&gt;功能描述： 该函数计算累积样本标准偏离，并返回总体变量的平方根，其返回值与VAR_POP函数的平方根相同。（Standard Deviation－Sample）&lt;br /&gt;SAMPLE：下例返回部门20、30、60的薪水值的样本标准偏差&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT department_id, last_name, hire_date, salary, &lt;br /&gt;STDDEV_SAMP(salary) OVER &lt;br /&gt;(PARTITION BY department_id ORDER BY hire_date &lt;br /&gt;ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cum_sdev &lt;br /&gt;FROM employees&lt;br /&gt;WHERE department_id in (20,30,60);&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;DEPARTMENT_ID LAST_NAME HIRE_DATE SALARY CUM_SDEV&lt;br /&gt;------------- ------------------------- ---------- ---------- ----------&lt;br /&gt;20 Hartstein 17-2月 -96 13000&lt;br /&gt;20 Fay 17-8月 -97 6000 4949.74747&lt;br /&gt;30 Raphaely 07-12月-94 11000&lt;br /&gt;30 Khoo 18-5月 -95 3100 5586.14357&lt;br /&gt;30 Tobias 24-7月 -97 2800 4650.0896&lt;br /&gt;30 Baida 24-12月-97 2900 4035.26125&lt;br /&gt;30 Himuro 15-11月-98 2600 3649.2465&lt;br /&gt;30 Colmenares 10-8月 -99 2500 3362.58829&lt;br /&gt;60 Hunold 03-1月 -90 9000&lt;br /&gt;60 Ernst 21-5月 -91 6000 2121.32034&lt;br /&gt;60 Austin 25-6月 -97 4800 2163.33077&lt;br /&gt;60 Pataballa 05-2月 -98 4800 1982.42276&lt;br /&gt;60 Lorentz 07-2月 -99 4200 1925.61678&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;SUM &lt;br /&gt;功能描述：该函数计算组中表达式的累积和。&lt;br /&gt;SAMPLE：下例计算同一经理下员工的薪水累积值&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT manager_id, last_name, salary,&lt;br /&gt;SUM (salary) OVER (PARTITION BY manager_id ORDER BY salary&lt;br /&gt;RANGE UNBOUNDED PRECEDING) l_csum&lt;br /&gt;FROM employees&lt;br /&gt;WHERE manager_id in (101,103,108);&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;MANAGER_ID LAST_NAME SALARY L_CSUM&lt;br /&gt;---------- ------------------------- ---------- ----------&lt;br /&gt;101 Whalen 4400 4400&lt;br /&gt;101 Mavris 6500 10900&lt;br /&gt;101 Baer 10000 20900&lt;br /&gt;101 Greenberg 12000 44900&lt;br /&gt;101 Higgins 12000 44900&lt;br /&gt;103 Lorentz 4200 4200&lt;br /&gt;103 Austin 4800 13800&lt;br /&gt;103 Pataballa 4800 13800&lt;br /&gt;103 Ernst 6000 19800&lt;br /&gt;108 Popp 6900 6900&lt;br /&gt;108 Sciarra 7700 14600&lt;br /&gt;108 Urman 7800 22400&lt;br /&gt;108 Chen 8200 30600&lt;br /&gt;108 Faviet 9000 39600&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VAR_POP&lt;br /&gt;功能描述：（Variance Population）该函数返回非空集合的总体变量（忽略null），VAR_POP进行如下计算：&lt;br /&gt;(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr)&lt;br /&gt;SAMPLE：下例计算1998年每月销售的累积总体和样本变量（本例在SH用户下运行）&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT t.calendar_month_desc,&lt;br /&gt;VAR_POP(SUM(s.amount_sold)) &lt;br /&gt;OVER (ORDER BY t.calendar_month_desc) "Var_Pop",&lt;br /&gt;VAR_SAMP(SUM(s.amount_sold)) &lt;br /&gt;OVER (ORDER BY t.calendar_month_desc) "Var_Samp" &lt;br /&gt;FROM sales s, times t&lt;br /&gt;WHERE s.time_id = t.time_id AND t.calendar_year = 1998&lt;br /&gt;GROUP BY t.calendar_month_desc;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;CALENDAR Var_Pop Var_Samp&lt;br /&gt;-------- ---------- ----------&lt;br /&gt;1998-01 0&lt;br /&gt;1998-02 6.1321E+11 1.2264E+12&lt;br /&gt;1998-03 4.7058E+11 7.0587E+11&lt;br /&gt;1998-04 4.6929E+11 6.2572E+11&lt;br /&gt;1998-05 1.5524E+12 1.9405E+12&lt;br /&gt;1998-06 2.3711E+12 2.8453E+12&lt;br /&gt;1998-07 3.7464E+12 4.3708E+12&lt;br /&gt;1998-08 3.7852E+12 4.3260E+12&lt;br /&gt;1998-09 3.5753E+12 4.0222E+12&lt;br /&gt;1998-10 3.4343E+12 3.8159E+12&lt;br /&gt;1998-11 3.4245E+12 3.7669E+12&lt;br /&gt;1998-12 4.8937E+12 5.3386E+12&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;VAR_SAMP &lt;br /&gt;功能描述：（Variance Sample）该函数返回非空集合的样本变量（忽略null），VAR_POP进行如下计算：&lt;br /&gt;(SUM(expr*expr)-SUM(expr)*SUM(expr)/COUNT(expr))/(COUNT(expr)-1)&lt;br /&gt;SAMPLE：下例计算1998年每月销售的累积总体和样本变量&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT t.calendar_month_desc,&lt;br /&gt;VAR_POP(SUM(s.amount_sold)) &lt;br /&gt;OVER (ORDER BY t.calendar_month_desc) "Var_Pop",&lt;br /&gt;VAR_SAMP(SUM(s.amount_sold)) &lt;br /&gt;OVER (ORDER BY t.calendar_month_desc) "Var_Samp" &lt;br /&gt;FROM sales s, times t&lt;br /&gt;WHERE s.time_id = t.time_id AND t.calendar_year = 1998&lt;br /&gt;GROUP BY t.calendar_month_desc;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;CALENDAR Var_Pop Var_Samp&lt;br /&gt;-------- ---------- ----------&lt;br /&gt;1998-01 0&lt;br /&gt;1998-02 6.1321E+11 1.2264E+12&lt;br /&gt;1998-03 4.7058E+11 7.0587E+11&lt;br /&gt;1998-04 4.6929E+11 6.2572E+11&lt;br /&gt;1998-05 1.5524E+12 1.9405E+12&lt;br /&gt;1998-06 2.3711E+12 2.8453E+12&lt;br /&gt;1998-07 3.7464E+12 4.3708E+12&lt;br /&gt;1998-08 3.7852E+12 4.3260E+12&lt;br /&gt;1998-09 3.5753E+12 4.0222E+12&lt;br /&gt;1998-10 3.4343E+12 3.8159E+12&lt;br /&gt;1998-11 3.4245E+12 3.7669E+12&lt;br /&gt;1998-12 4.8937E+12 5.3386E+12&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;font size="2"&gt;VARIANCE &lt;br /&gt;功能描述：该函数返回表达式的变量，Oracle计算该变量如下：&lt;br /&gt;如果表达式中行数为1，则返回0&lt;br /&gt;如果表达式中行数大于1，则返回VAR_SAMP&lt;br /&gt;SAMPLE：下例返回部门30按雇佣日期排序的薪水值的累积变化&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;SELECT last_name, salary, VARIANCE(salary) &lt;br /&gt;OVER (ORDER BY hire_date) "Variance"&lt;br /&gt;FROM employees &lt;br /&gt;WHERE department_id = 30;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;LAST_NAME SALARY Variance&lt;br /&gt;------------------------- ---------- ----------&lt;br /&gt;Raphaely 11000 0&lt;br /&gt;Khoo 3100 31205000&lt;br /&gt;Tobias 2800 21623333.3&lt;br /&gt;Baida 2900 16283333.3&lt;br /&gt;Himuro 2600 13317000&lt;br /&gt;Colmenares 2500 11307000&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font size="2"&gt;=====================================&lt;br /&gt;连续求和问题：&lt;br /&gt;select name,sum(cnt) over(order by rownum) from t1;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/1750933.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2010/06/03/1750933.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wuyisky/archive/2010/05/27/1745545.html</id><title type="text">oracle游标</title><summary type="text">游标-----内存中的一块区域,存放的是select 的结果 游标用来处理从数据库中检索的多行记录（使用SELECT语句）。利用游标，程序可以逐个地处理和遍历一次检索返回的整个记录集。为了处理SQL语句，Oracle将在内存中分配一个区域，这就是上下文区。这个区包含了已经处理完的行数、指向被分析语句的指针，整个区是查询语句返回的数据行集。游标就是指向上下文区句柄或指针。两种游标：一、显示游标（需要...</summary><published>2010-05-27T08:41:00Z</published><updated>2010-05-27T08:41:00Z</updated><author><name>无意</name><uri>http://www.cnblogs.com/wuyisky/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wuyisky/archive/2010/05/27/1745545.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wuyisky/archive/2010/05/27/1745545.html"/><content type="html">&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000; font-family: 宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-size: 24pt"&gt;&lt;span style="color: #ff0000; font-family: 宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-size: 14pt; font-family: 新宋体"&gt;游标-----&lt;font style="color: #0000ff"&gt;内存中的一块区域,存放的是select 的结果&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 游标用来处理从数据库中检索的多行记录（使用&lt;/span&gt;SELECT&lt;span style="font-family: 宋体"&gt;语句）。利用游标，程序可以逐个地处理和遍历一次检索返回的整个记录集。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: 宋体"&gt;为了处理&lt;/span&gt;SQL&lt;span style="font-family: 宋体"&gt;语句，&lt;/span&gt;Oracle&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;将在内存中分配一个区域，这就是上下文区。这个区包含了已经处理完的行数、指向被分析语句的指针，整个区是查询语句返回的数据行集。游标就是指向上下文区句柄或指针。&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 宋体"&gt;两种游标：&lt;br /&gt;一、显示游标&lt;span style="color: #ff0000"&gt;（需要明确定义！）&lt;/span&gt;&lt;/span&gt;&lt;/font&gt; &lt;/span&gt;&lt;/span&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: 宋体"&gt;显示游标被用于处理返回多行数据的&lt;/span&gt;SELECT &lt;span style="font-family: 宋体"&gt;语句，游标名通过&lt;/span&gt;CURSOR&amp;#8230;.IS &lt;span style="font-family: 宋体"&gt;语句显示地赋给&lt;/span&gt;SELECT &lt;span style="font-family: 宋体"&gt;语句。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 宋体"&gt;在&lt;/span&gt;PL/SQL&lt;span style="font-family: 宋体"&gt;中处理显示游标所必需的四个步骤：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;span style="font-family: 宋体"&gt;）声明游标；&lt;/span&gt;&lt;span style="color: blue"&gt;CURSOR cursor_name IS select_statement&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;span style="font-family: 宋体"&gt;）为查询打开游标；&lt;/span&gt;&lt;span style="color: blue"&gt;OPEN cursor_name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;span style="font-family: 宋体"&gt;）取得结果放入&lt;/span&gt;PL/SQL&lt;span style="font-family: 宋体"&gt;变量中；&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;FETCH cursor_name INTO list_of_variables; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;span style="color: blue"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FETCH cursor_name INTO PL/SQL_record; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;span style="font-family: 宋体"&gt;）关闭游标。&lt;/span&gt;&lt;span style="color: blue"&gt;CLOSE cursor_name &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em&gt;&lt;span style="font-family: 宋体"&gt;注意：在声明游标时，&lt;/span&gt;&lt;/em&gt;select_statement&lt;span style="font-family: 宋体"&gt;不能包含&lt;/span&gt;INTO&lt;span style="font-family: 宋体"&gt;子句。当使用显示游标时，&lt;/span&gt;INTO&lt;span style="font-family: 宋体"&gt;子句是&lt;/span&gt;FETCH&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;&lt;span style="font-family: 新宋体"&gt;语句的一部分。&lt;br /&gt;&lt;/span&gt;&lt;font style="color: #0000ff; font-family: 方正姚体"&gt;&lt;span style="font-family: 楷体_GB2312"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1、 显式游标&lt;br style="font-family: " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select语句上 使用显式游标&lt;br style="font-family: " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 能明确访问结果集&lt;br style="font-family: " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for循环游标&lt;br style="font-family: " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 参数游标 &lt;br style="font-family: " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 解决多行记录的查询问题&lt;br style="font-family: " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fetch游标&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;font size="3"&gt;二、&lt;span style="font-family: 宋体"&gt;隐式游标&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 宋体"&gt;所有的隐式游标都被假设为只返回一条记录。&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 宋体"&gt;使用隐式游标时，用户无需进行声明、打开及关闭。&lt;/span&gt;PL/SQL&lt;span style="font-family: 宋体"&gt;隐含地打开、处理，然后关掉游标。&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 宋体"&gt;例如：&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8230;&amp;#8230;.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT studentNo,studentName&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO curStudentNo,curStudentName&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM StudentRecord&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE name=&amp;#8217;gg&amp;#8217;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt"&gt;&lt;font size="3"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 宋体"&gt;上述游标自动打开，并把相关值赋给对应变量，然后关闭。执行完后，&lt;/span&gt;PL/SQL&lt;span style="font-family: 宋体"&gt;变量&lt;/span&gt;curStudentNo,curStudentName&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;&lt;span style="font-family: 新宋体"&gt;中已经有了值。&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&lt;span style="font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp; 2、 隐式游标&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 单条sql语句所产生的结果集合 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 用关键字SQL表示隐式游标&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4个属性 %rowcount&amp;nbsp; 影响的记录的行数&amp;nbsp; 整数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %found&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 影响到了记录 true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %notfound&amp;nbsp; 没有影响到记录 true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %isopen&amp;nbsp;&amp;nbsp;&amp;nbsp; 是否打开&amp;nbsp; 布尔值 永远是false&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 多条sql语句 隐式游标SQL永远指的是最后一条sql语句的结果&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 主要使用在update 和 delete语句上&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;span style="color: #000000; font-family: 新宋体"&gt;&lt;span style="color: #ff0000"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="color: #00ff00"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="color: #000000"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;span style="font-family: 新宋体"&gt;&lt;strong&gt;实际操作和例子：&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font style="color: #ff0000" face="Courier New"&gt;&amp;nbsp;&amp;nbsp; (1)FOR循环游标 (常用的一种游标) &lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;--&amp;lt;1&amp;gt;定义游标&lt;br /&gt;&amp;nbsp;--&amp;lt;2&amp;gt;定义游标变量&lt;br /&gt;&amp;nbsp;--&amp;lt;3&amp;gt;使用for循环来使用这个游标&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp; --前向游标 只能往一个方向走&lt;br /&gt;&amp;nbsp; --效率很高&lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --类型定义&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor cc is select empno,ename,job,sal&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from emp where job = 'MANAGER';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --定义一个游标变量&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ccrec cc%rowtype;&lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --for循环&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ccrec in cc loop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbms_output.put_line(ccrec.empno||'-'||ccrec.ename||'-'||ccrec.job||'-'||ccrec.sal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end loop;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&amp;nbsp; (2) fetch游标&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --使用的时候 必须要明确的打开和关闭&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --类型定义&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor cc is select empno,ename,job,sal&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from emp where job = 'MANAGER';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --定义一个游标变量&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ccrec cc%rowtype;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff0000"&gt;--打开游标&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; open cc;&lt;br /&gt;&amp;nbsp;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --loop循环&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --提取一行数据到ccrec中 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fetch cc into ccrec;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --判断是否提取到值，没取到值就退出&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --取到值cc%notfound 是false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --取不到值cc%notfound 是true &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit when cc%notfound;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbms_output.put_line(ccrec.empno||'-'||ccrec.ename||'-'||ccrec.job||'-'||ccrec.sal);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end loop;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --关闭游标&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close cc;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br /&gt;&lt;span style="color: #ff0000"&gt;&lt;span style="color: #0000ff"&gt;&amp;nbsp; 游标的属性4种&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %notfound&amp;nbsp; fetch是否提到数据 没有true 提到false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %found&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fetch是否提到数据 有true 没提到false&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %rowcount&amp;nbsp; 已经取出的记录的条数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %isopen&amp;nbsp;&amp;nbsp;&amp;nbsp; 布尔值 游标是否打开&lt;/span&gt;&lt;br /&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; (3)参数游标&lt;br /&gt;&lt;/font&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;span style="color: #ff0000"&gt;按部门编号的顺序输出部门经理的名字&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --部门&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor c1 is select deptno from dept;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --参数游标c2,定义参数的时候&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --只能指定类型,不能指定长度&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --参数只能出现在select语句=号的右侧&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor c2(no number,pjob varchar2) is select emp.* from emp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where deptno = no and job=pjob;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c1rec c1%rowtype;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c2rec c2%rowtype;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --定义变量的时候要指定长度&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_job varchar2(20);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --部门&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for c1rec in c1 loop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --参数在游标中使用&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for c2rec in c2(c1rec.deptno,'MANAGER') loop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbms_output.put_line(c1rec.deptno||'-'||c2rec.ename);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end loop; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end loop; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="color: #ff0000"&gt;&lt;font face="Courier New"&gt;&amp;nbsp; (4)引用游标/动态游标&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- select语句是动态的&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --定义一个类型(ref cursor)弱类型&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type cur is ref cursor;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --强类型(返回的结果集有要求)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type cur1 is ref cursor return emp%rowtype;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --定义一个ref cursor类型的变量&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cura cur;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c1rec emp%rowtype;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c2rec dept%rowtype;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br /&gt;&amp;nbsp; DBMS_output.put_line('输出员工')&amp;nbsp;&amp;nbsp; ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; open cura for select * from emp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fetch cura into c1rec;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit when cura%notfound;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_output.put_line(c1rec.ename)&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end loop ;&lt;br /&gt;&amp;nbsp; DBMS_output.put_line('输出部门')&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; open cura for select * from dept;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fetch cura into c2rec;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit when cura%notfound;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_output.put_line(c2rec.dname)&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end loop;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close cura;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/font&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;img src="http://www.cnblogs.com/wuyisky/aggbug/1745545.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wuyisky/archive/2010/05/27/1745545.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
