网友分享:Oracle数据库开发技术经验浅谈

网络整理 - 07-27
Oracle数据库作为大型数据库管理系统,近年来一直占有世界上高端数据库的最大份额,其强大而完善的数据库管理功能,以及ORACLE公司推陈出新的不断努力,一直成为IT业界瞩目的焦点。岭澳核电站的数据库平台采用了ORACLE7.3作为后端平台,前端选择了ORACLE公司的DEVELOPER 2000 及DESIGNER 2000作为开发工具,采用了目前流行的CLIENT/SERVER模式。本人在ORACLE系统的开发中,就ORACLE的整套开发工具提出一些自己的体会,供同行参考。

一. ORACLE SQL PLUS 使用技巧:

----①查找重复记录:

[pre]SELECT DRAWING,DSNO FROM EM5_PIPE_PREFAB

WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5

_PIPE_PREFAB D

WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND

EM5_PIPE_PREFAB.DSNO=D.DSNO);

[/pre]

----执行上述SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录。

----删除重复记录:

[pre]DELETE FROM EM5_PIPE_PREFAB

WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5

_PIPE_PREFAB D

WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND

EM5_PIPE_PREFAB.DSNO=D.DSNO);

[/pre]

----执行上述SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录。

----② 快速编译所有视图

----当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍,因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。

[pre]SQL >SPOOL ON.SQL

SQL >SELECT ‘ALTER VIEW ‘||TNAME||’COMPILE;’ FROM TAB;

SQL >SPOOL OFF

[/pre]

然后执行ON.SQL即可。SQL >@ON.SQL

当然,授权和创建同义词也可以快速进行,如:

[pre]SQL >SELECT ‘GRANT SELECT ON ’

||TNAME||’ TO USERNAME;’ FROM TAB;

SQL >SELECT ‘CREATE SYNONYM

‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB;

[/pre]

③ 用外联接提高表连接的查询速度

在作表连接(常用于视图)时,常使用以下方法来查询数据:

[pre]SELECT PAY_NO, PROJECT_NAME

FROM A

WHERE A.PAY_NO NOT IN (SELECT PAY_

NO FROM B WHERE VALUE >=120000);

[/pre]

----但是若表A有10000条记录,表B有10000条记录,则要用掉30分钟才能查完,主要因为NOT IN要进行一条一条的比较,共需要10000*10000次比较后,才能得到结果。该用外联接后,可以缩短到1分左右的时间。

----⑤ 怎样在数据库触发器中使用列的新值与旧值

----在数据库触发器中几乎总是要使用触发器基表的列值,如果某条语句需要某列修改前的值,使用:OLD就可以了,使用某列修改后的新值,用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。

二.ORACLE DEVELOPER 2000使用技巧:

----① 改变FORM(FMX模块)运行时的Runform4.5的题头:

----DEVELOPER2000中FMX默认题头为:Developer/2000 Forms Runtime for Windows 95 / NT 你可以改为自己定义的标题,

----1. 在Form级触发器中添加触发WHEN-NEW-FORM-INSTANCE

----2. 在此触发器中写如下代码:

[pre]set_window_property(FORMS_MDI_WINDOW,TITLE,'POINT

SYSTEM 欢迎使用');

[/pre]