Oracle的model用法简介.docx_第1页
Oracle的model用法简介.docx_第2页
Oracle的model用法简介.docx_第3页
Oracle的model用法简介.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle的model用法简介2010-04-22 10:15Model语句是Oracle 10g的新功能之一。本文通过一些简单的例子帮助理解Model语句的用法,复杂使用场景请参考其他文章。环境:当然需要Oracle 10g以上,本人是在11g上测试的。1. 什么是model语句model语句是Oracle10g的新功能,可以在select语句里面像其他编程语言操作数组一样,对SQL的结果集进行处理。执行顺序是位于Having之后。select的解析执行顺序1. from语句 2. where语句 (结合条件) 3. start with语句 4. connect by语句 5. where语句 6. group by语句 7. having语句 8. model语句 9. select语句10. union、minus、intersect等集合演算演算11. order by语句model的好处Oracle 9i为止,需要使用各种计算分析函数,union all等,以及借助其他开发语言(C#及Java等)进行复杂计算统计合并等。使用Model之后,这些都可以在SQL里面进行了。model典型使用场景。1. 合计行追加 2. 行列变换 3. 使用当前行的前后行 4. RegExp_Replace函数的循环执行 2. HelloWorld先看一个简单的例子。例句1select ArrValue,soeji from (select abcdefghijklmn as ArrValue, 1 as soeji from dual) model dimension by(soeji) measures(ArrValue) rules(ArrValue1 = Hello World);结果:ArrValuesoejiHello World1说明:model model语句的关键字,必须。dimension bydimension维度的意思,可以理解为数组的索引,必须。measures 指定作为数组的列rules对数组进行各种操作的描述。例句1的理解:select abcdefghijklmn as ArrValue, 1 as soeji from dual;上面子查询的结果:ArrValue soejiabcdefghijklmn1根据下面语句model dimension by (soeji) measures(ArrValue)soeji作为索引对数组ArrValue进行操作,rules(ArrValue1 = Hello World)就是说用Hello World覆盖ArrValue1里面的值。在看一个例子,例句2:select ArrValue,soeji from (select abcdefghijklmn as ArrValue, 1 as soeji from dual) model dimension by(soeji) measures(ArrValue) rules(ArrValue1 = Hello World, ArrValue2 = Hello model);执行结果:ArrValue soejiHello World1Hello model2rules的缺省行为是存在就更新,不存在则追加,因此,ArrValue1 = Hello World是更新一条,ArrValue2 = Hello Modelinsert一条。再看一个例子,例句3:select ArrValue,soeji from (select abcdefghijklmn as ArrValue, 1 as soeji from dual) model dimension by(soeji) measures(ArrValue) rules(ArrValue3 = Hello Oracle);结果是:ArrValue soejiabcdefghijklmn1Hello Oracle3model语句里面,索引可以是不连续的。再看一个例子,例句4:select ArrValue,soeji from (select abcdefghijklmn as ArrValue, 1 as soeji from dual) model return updated rows dimension by(soeji) measures(ArrValue) rules(ArrValue4 = Hello CodeZine);结果是:ArrValue soejiHello CodeZine4使用model return updated rows的话,被rules更新或者插入的行才显示,没有更新过的行不再作为SQL的结果。再来一个,有下表,希望在检索结果后面加一个合计行:addTotalIDVal13021003504300select ID,Val from addTotal model dimension by(ID) measures(Val) rules( Valnull = Val1+Val2+Val3+Val4);结果IDVal13021003504300null480不使用model的话可以使用rollup,union all等实现。rollup方式:select ID,sum(Val) as Val fr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论