RALE数据库开发基础第八章高级用法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RALE数据库开发基础第八章高级用法.doc

ORACLE数据库管理员基础 第八章一些髙级的用法 这里给出一点不作为一般耍求的内容,它虽然不足必需的,但对子应川开发來说很重耍。希 單Oracle应用设计者把它应用到系统的设计屮。 8. 1 关于 DECODE DECODE是Oracle公司 提供的功能,它是一个功能很强的函数它里然不是SQL 的标准,但对于性能非常有用。到M前,其他的数据库供应商还不能提供类似DECODE的 功能,其至有的数据库的供应商批评Oracle的SQL不标准。实际上,这种批评冇些片胆或 不够水平。就象有些7Y午制造商抱怨亨利。福特的“Hr午不标准一样。 8. 1. 1 DECODE 中的 if-then-else 逻辑 在逻辑编程中,经常用到Tf - Then -Else进行逻辑判断。在DECODE的语法中,实际上 就是这样的逻辑处理过程。它的语法如h DECODE (value, if 1, thcnl, if2, thcn2, if3, thon3, . . . else ) Value代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测 试,如果value的值为ifl,Decode函数的结果是thenl;如果value等于if2, Decode函数结 果是then2;等等。事实上,可以给出多个if/then配对如果value结果不等于给出的任何配 对吋,Decode结果就返回else。 需耍注意的足,这里的if、then及else都可以足函数或计算表达式。 8. 1.2 DECODE的简单例子 Oracle系统中就冇许多数据字典足使川decode思想设计的,比如记录会话信息的 V$SESSION数据字典视图就是这样。我们从《OracleSi Reference))资料中了解到,当用户登 录成功后在V$SESSTON中就有该用户的相应记录,但用户所进行的命令操作在该视图中只 记录命令的代码(0—没宥任何操作,2—Insorv),而不是具体的命令关键字。因此,我们 滿要/解当前各个用户的名字及他们所进行的操作时,要用卜面命令才能得到详细的结果: select sid,serial#, username, DECODE(command, 0, ’ None Insert’, 181 SelectT , Update* , Delete’ , Drop’ , OtherJ ) cmmand from v$session where username is not null; 8. 1.3 DECODE实现表的转置 数据库中的表足由列和行构成的一个二维表。一般列在任何数据库中都足冇限的数量,而行 的变化较大,如果表很大,行的数最讨能大上千万行。同一列的不同行讨能冇不同的值,而 且不是预先定义的。 除上面描述表具有的一些特点外,有一些表可以看成是不变的或奍是较稳定的,比如住房公 积金系统是各个单位按照职工的工资数的比例交到木地的经办行中,它的处理流程如下: 例1.住房公积金报表置换实例: 各个单位在本地经办行进行开户,开户就是将单位的S本信总和职工信总的进行登记; 每月各个单位的会计到经办行交缴木单位的所冇职工的住房公积金,系统记录冇每个职工 的交缴明细并在每条记录上记录有经办行的代码; 每月、季、半年及年终都耍求将经办行变为“列”给出个月的明细报表: 经办行:城西区城东区 月份: 2001.01 xxxxl. xx xxxxx2. xx 2001.02 xxxx3.xx xxxxx4.xx 原来的数据顺序是: 城西区 2001. 01 xxxxxl.xx 城东区 2001. 01 xxxxx2. xx 城丙区 2001.02 xxxxx3. xx 城东区 2001. 02 xxxxxd. xx 住房公积金系统记录职工的每月交缴名细的pay_lst表结构是: bank code varchar2 (6) NOT NULL,—经办行代码 acc no varchar2(15) not null,—单位代K(甲位帐号) emp_acc_no varchar2(20) not null,—职工帐号 translate date not null,—交缴闩期 tran一val Number (7, 2) not null,—交缴额 sys_date date default sysdate,—系统円期 182 oper_id varchar2(10)—操作员代码 这样的表结构,一般按照将经办行作为行进行统计是很容易的,但是如果希樂将经办行变为 列这样的格式来输出就有困难。如果用DECODE函数来处理则变得很简单: 我们创建一个视图來对目前的pay_lst表进行奔询。将经办行代码变为一些其体的经办行名 称即可: CREATE OR R

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档