a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 126|回复: 0

[综合] Oracle辅导:Oracle数据库开发经验谈(1)

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
ORACLE数据库作为大型数据库管理系统,近年来一直占有世界上高端数据库的最大份额,其强大而完善的数据库管理功能,以及ORACLE公司推陈出新的不断努力,一直成为IT业界瞩目的焦点。岭澳核电站的数据库平台采用了ORACLE7.3作为后端平台,前端选择了ORACLE公司的 DEVELOPER 2000 及DESIGNER 2000作为开发工具,采用了目前流行的CLIENT/SERVER模式。本人在ORACLE系统的开发中,就ORACLE的整套开发工具提出一些自己的体会,供同行参考。
0 H; X6 I3 e% R1 Z4 s" p2 ^% U* t  一. ORACLE SQL PLUS 使用技巧:
" u3 s* g6 N( S" x$ d+ d3 D  ----①查找重复记录:; w! j' l$ V: x6 c  f; j
  SELECT DRAWING,DSNO FROM EM5_PIPE_PREFAB# Z6 H3 A# b& c  e
  WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5
( ^8 [) l! ]- b9 h  _PIPE_PREFAB D9 R0 F4 A& \5 P  Q+ @) P
  WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND4 a8 I) u) Y% \. B$ N9 ?3 R, ?- f5 `
  EM5_PIPE_PREFAB.DSNO=D.DSNO);
" S' I6 D: b: U+ ^8 ?" o, `  ----执行上述SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录。* e- g) M7 T3 f8 u+ k0 W
  ----删除重复记录:
. H9 H* J* c4 q& ~! Q  b  DELETE FROM EM5_PIPE_PREFAB
0 X# g0 }3 [" v$ F! z) J  WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5
  i& i3 V5 n/ ^! g& }! R* h. E0 M  _PIPE_PREFAB D/ V! n1 g- l+ E1 ^
  WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
4 M3 Q7 h. z; k3 Z  EM5_PIPE_PREFAB.DSNO=D.DSNO);
: B8 o& C& D2 O! b' \! F  ----执行上述SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录。& {( |! h6 `+ H3 {' y; E) \6 Y
  ----② 快速编译所有视图
* v) x$ E* Y# @) V6 d  O" ?5 b# y( l  ----当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍,因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。
$ \( \$ u; _9 J$ D, N$ v& y  SQL >SPOOL ON.SQL. T" O  Q) I2 P
  SQL >SELECT ‘ALTER VIEW ‘||TNAME||’3 S' A8 x8 R  |) Y
  COMPILE;’ FROM TAB;
  S, y- j& W1 j5 {. n( Y8 W% |7 S; @  SQL >SPOOL OFF) D+ c  l9 p# M' G4 V$ A+ d
  然后执行ON.SQL即可。  SQL >@ON.SQL
; n. t* N( R* s8 N- w8 c& L   当然,授权和创建同义词也可以快速进行,如:
; o* a& J3 J& G  |9 ~1 N  SQL >SELECT ‘GRANT SELECT ON ’
& I8 t, E, X# U$ R6 A$ v3 z  ||TNAME||’ TO USERNAME;’ FROM TAB;/ d: U5 Q2 e, I- o6 R2 K, b8 |+ V
  SQL >SELECT ‘CREATE SYNONYM5 z8 c  D8 J6 |# I
  ‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB;% B* u7 l% [+ ^
  ③ 用外联接提高表连接的查询速度+ F; `# V" V7 |+ |' ]( W
  在作表连接(常用于视图)时,常使用以下方法来查询数据:
1 T, ^$ H8 |; |+ N$ a3 |4 n" w  SELECT PAY_NO, PROJECT_NAME
7 x8 E4 h: S8 G1 n% a2 |& `  FROM A8 U) B! G) Y' A. h" K/ C9 ^! j3 V* F
  WHERE A.PAY_NO NOT IN (SELECT PAY_
" N: M+ M; S7 t) D6 K  NO FROM B WHERE VALUE >=120000);1 x$ i) v: I5 c6 \# t% x, Y
  ----但是若表A有10000条记录,表B有10000条记录,则要用掉30分钟才能查完,主要因为NOT IN要进行一条一条的比较,共需要10000*10000次比较后,才能得到结果。该用外联接后,可以缩短到1分左右的时间。2 n, ^# w* w) G1 D6 x
  ----⑤ 怎样在数据库触发器中使用列的新值与旧值
2 f* _9 w# A" Y% o  ----在数据库触发器中几乎总是要使用触发器基表的列值,如果某条语句需要某列修改前的值,使用:OLD就可以了,使用某列修改后的新值,用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。: d! P/ D4 m! n' f% O+ L
  二.ORACLE DEVELOPER 2000使用技巧:8 e- P$ j/ Z+ v3 h1 ~
  ----① 改变FORM(FMX模块)运行时的Runform4.5的题头:' j3 K8 A- w6 q- Y; v- U' B- y
  ----DEVELOPER2000中FMX默认题头为:Developer/2000 Forms Runtime for Windows 95 / NT 你可以改为自己定义的标题,8 k3 ?3 ]. {/ E" X+ M6 z% }
  ----1. 在Form级触发器中添加触发WHEN-NEW-FORM-INSTANCE
, U; h/ U, @0 @; ?) i8 W9 ?1 d  ----2. 在此触发器中写如下代码:4 v4 S$ Z+ E$ V/ l& o- I
  set_window_property(FORMS_MDI_WINDOW,TITLE,'POINT
3 f: O# D( a* J' r* ^  SYSTEM 欢迎使用');
$ C$ R$ e! \8 q( L* K  ----② 如何隐藏菜单中的window选项:
+ l' @- J- E5 w) j$ T  ----在创建自己的菜单时,最后选项总有window项,下面介绍如何去掉它,
& N, D, L; K. x. X& b0 \  ----1. 创建一个Menu
; K  q# K" }  t6 A9 G! W- O  ----2. 在Menu中建立一个Item,命名为WINDOW。+ n) P& m! |/ \% v" n( [" T( K' Y% J
  ----3. 设置该Item属性如下:
0 a( F& U9 B  b; o  ----Menu Item Type:Magic  J& o6 {& z7 v4 o2 C/ Y) E
  Command Type:Null
0 y! y! \! k( m6 V4 R  X( l  V& }  Magic Item:Window. S9 }: x7 G1 ?- `* L* X/ @1 }7 O
  Lable:为空
3 h" F9 o- e( ?   ----③ 怎样创建动态下拉列表List
  R9 q+ K1 V' Y2 ~7 y. F  V  ----Developer 2000 中的列表是通过设置相关属性而完成数据项的列表设置的,但那只是静态的,有时你想让某项成为动态的列表,随输入数据的改变而改变,就需要动手去编个小程序。下面详细介绍怎样去做:2 B: s: a0 H+ e$ D# g, B
  ----有块EBOP_CABLE_ACCOUNT,下有SPECIFICATION数据项,当一进入该模块时,就将SPECIFICATION项在数据库中存储的值动态显示出来,先在Form4.5中建立一个PRCEDURE,命名为DYN_LIST:
3 n8 W5 Q$ B+ e7 d0 E- E  然后在FORM的WHEN-NEW# v& T$ G8 {# v
  -FORM-INSTANCE触发子中加入一行:
. X3 D% L: x, F$ r! E% |) D! V( R  DYN_LIST;
9 |( @  X% @$ t8 T  ----这样一进入该FMX,就会动态刷新该列表。除此之外,SPECIFICATION数据项改为列表项。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 15:15 , Processed in 0.172298 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表