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