网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Linux下用PHP4连接ORACLE8I的方法.
.oracle毛病(二).
.讲解Oracle表碎片的具体起因及解.
.sendmail支持的操作系统有哪些.
.在单机上创建物理的Oracle9istan.
.Oracle 10G 中的“回收站”.
.关于数据库调优Node1.
.如何掌握 Oracle 中的时间间隔型.
.ORACLE常用傻瓜問題1000問(之三).
.如何在linux环境下启动时打开num.
.Oracle数据库备份技术.
.ERP performance tuning 第四天.
.ORA-01555 快照过旧.
.获得Redo Block Size的非典型方法.
.ORACLE 的Virtual Private Datab.
.怎样才能dump Oracle数据库的内部.
.ORACLE常用傻瓜問題1000問(之一).
.利用Oracle rownum完成行转列一例.
.Decode 函数的用法.
.Oracle PL/SQL学习笔记(1).

ORACLE Developer/2000 编程技巧

发表日期:2008-2-9



  Oracle 作为大型数据库治理系统,它强大而完善的数据治理功能吸引着越来越多的人们的注重。本人在oracle 系统开发中,就developer/2000编程有如下体会,希望能给初学者提供一些参考。
  
  
  ---- 一、使用设置菜单项属性及form 数据项属性限制不同用户的访问范围
  
  
  ---- 一个应用系统往往有不同的用户,比如: 一个劳资系统中,一个用户负责治理职工基本档案部分,另一个用户负责治理职工工资部分,治理职工基本档案的用户对职工档案只有查询的权限而不能有修改的权限。实现上述功能的一个简单的实现办法是:
  
  
  ---- 设置两个全局变量分别记录用户名和密码,在进入系统时,两个用户分别输入不同的用户名和密码,判定用户名,使SET_MENU_PROPERTY(MENU1,ENABLED,FALSE)语句设置没有查询权限的用户不能访问菜单项’MENU1’。
  
  
  ---- 二、提高表连接的查询速度
  
  
  ---- 在表连接查询时,经常用下列查询方法查询数据是:
  
  
  SELECT RECORDNO,NAME,AGE
  
  FROM 表1
  
  WHERE 表1.RECORDNO NOT IN
  
  (SELECT RECORDNO
  
  FROM 表2
  
  WHERE BIRTHDAY=’710618’);
  
  
  ---- 笔者发现,假如表1的长度为6000条记录,表2的长度为1000条记录, 则要4分钟才能出结果。原因是使用了比较运算符 NOT IN ,它的逻辑测试速度是最慢的。利用外连接替换NOT IN 运算符,查询时间则缩短为50秒。修改方法如下:
  
  SELECT RECORDNO,NAME,AGE
  
  FROM 表1,表2
  
  WHERE 表1.RECORDNO=表2.RECORDNO(+)
  
  AND 表2.RECORDNO IS NULL
  
  AND 表2.BIRTHDAY(+)=’710618’;
  
   三、利用用库模块实现模块资源共享
  
  ---- 在编程中很多FROM 模块需要共用一个程序单元。ORACLE FORM 4.5提出了库模块的概念。使用库模块建立共享程序单元库,既减少了磁盘占用空间,又增加程序的可维护性。使用库模块共享程序单元的过程是:点击系统菜单的file-new-liberary选项,建立一库模块,在program units节点下增加一程序单元, 写入需共享程序的单元编码, 编译后存盘。当FORM模块需共享时,在模块的Attached Libraries节点下连接库模块(此时屏幕会提示是否要删除路径,用户选择NO)。这样,用户便可在FORM模块中直接使用共享程序单元了。
  
  
  四、易导致查询数据错误的原因
  
  
  ---- 在执行数据查询时,经常发现查询结果与预想的不同,主要原因是:
  
  
  ---- 1.使用 SELECT * FROM <表名> WHERE <字段名> LIKE ’%’ 语句查询不出 <字段名>为NULL的字段。此时需对字段为NULL的情况另外处理。如:SELECT * FROM <表名> WHERE <字段名> LIKE ’%’ OR <字段名> IS NULL
  
  
  ---- 2.使用union 字段连接各表时,连接顺序不是按书写的先后顺序,而是按连接表的第一个字段排序。因此,为了使表按预想的顺序连接,需在各表中插入第一字段指定排序序号。
  
  
  ---- 五、使用视图组织报表数据简单且易于维护
  
  
  ---- ORACLE REPORT2.5提供了多种报表格式,但在报表中定义各种统计信息不仅繁琐而且不利于今后的维护,使用视图预先将各种统计、汇总数据预备好,可以起到事半功倍的作用,一旦数据源有所调整,只需修改后台视图,而不用再改前端程序了。
  
  
  表1结构为: UNIT NAME RECORENO SEX
  
  办公室 王五 1 男
  
  财务科 李四 2 女
  
  .. .. .. ..
  
  
  1. 首先建立视图对数据进行汇总:
  
  CREATE VIEW RYTJ (UNIT, BOY,GIRL)
  
  AS SELECT UNIT, SUM(DECODE(SEX,’男’
  
  ,1,0)) , SUM(DECODE(SEX,’女’,1,0) )
  
  FROM 表1;
  
  
   2. 使用 ORACLE REPORT 2.5 对视图’RYTJ’建立报表。
  
   六、 给报表加序号的简单办法
  
  
  ---- ORACLE REPORT 2.5 没有提供加序号功能,使用下述简单方法可实现给报表自动加序号:在数据模板中, 向查询组中加入一个公式列 CF_XH NUMBER(4), 赋初值为0, 点击[EDIT] 按钮, 插入编码RETURN(:CF_CH+1)。

上一篇:ORACLE培训教程(3)-SQL概述 人气:827
下一篇:ORACLE培训教程(1)-ORACLE系统概述 人气:823
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐