亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle數據庫開發經驗淺談

2024-08-29 13:53:27
字體:
來源:轉載
供稿:網友

    Oracle數據庫作為大型數據庫管理系統,近年來一直占有世界上高端數據庫的最大份額,其強大而完善的數據庫管理功能,以及ORACLE公司推陳出新的不斷努力,一直成為IT業界矚目的焦點。嶺澳核電站的數據庫平臺采用了ORACLE7.3作為后端平臺,前端選擇了ORACLE公司的DEVELOPER 2000 及DESIGNER 2000作為開發工具,采用了目前流行的CLIENT/SERVER模式。本人在ORACLE系統的開發中,就ORACLE的整套開發工具提出一些自己的體會,供同行參考。
  一. oracle sql PLUS 使用技巧:

  ----①查找重復記錄:

  

      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);
 
  ----執行上述SQL語句后就可以顯示所有DRAWING和DSNO相同且重復的記錄。
 

  ----刪除重復記錄:

  

      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);
 
  ----執行上述SQL語句后就可以刪除所有DRAWING和DSNO相同且重復的記錄。
 

  ----② 快速編譯所有視圖

  ----當在把數據庫倒入到新的服務器上后(數據庫重建),需要將視圖重新編譯一遍,因為該表空間視圖到其它表空間的表的連接會出現問題,可以利用PL/SQL的語言特性,快速編譯。

  

      sql >SPOOL ON.SQL
  sql >SELECT ‘ALTER VIEW ‘||TNAME||’

  COMPILE;’ FROM TAB;

  sql >SPOOL OFF
 

  然后執行ON.SQL即可?! ql >@ON.SQL

 當然,授權和創建同義詞也可以快速進行,如:

  

      sql >SELECT ‘GRANT SELECT ON ’
  ||TNAME||’ TO USERNAME;’ FROM TAB;

  sql >SELECT ‘CREATE SYNONYM

  ‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB;
 
 ?、?用外聯接提高表連接的查詢速度

 

  在作表連接(常用于視圖)時,常使用以下方法來查詢數據:

  

      SELECT PAY_NO, PROJECT_NAME
  FROM A

  WHERE A.PAY_NO NOT IN (SELECT PAY_

  NO FROM B WHERE VALUE >=120000);
 
  ----但是若表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. 在此觸發器中寫如下代碼:

  set_window_property(FORMS_MDI_WINDOW,TITLE,'POINT

  system 歡迎使用');

  ----② 如何隱藏菜單中的window選項:

  ----在創建自己的菜單時,最后選項總有window項,下面介紹如何去掉它,

  ----1. 創建一個Menu

  ----2. 在Menu中建立一個Item,命名為WINDOW。

  ----3. 設置該Item屬性如下:

  ----Menu Item Type:Magic

  Command Type:Null

  Magic Item:Window

  Lable:為空

  ----③ 怎樣創建動態下拉列表List

  ----Developer 2000 中的列表是通過設置相關屬性而完成數據項的列表設置的,但那只是靜態的,有時你想讓某項成為動態的列表,隨輸入數據的改變而改變,就需要動手去編個小程序。下面詳細介紹怎樣去做:

  ----有塊EBOP_CABLE_ACCOUNT,下有SPECIFICATION數據項,當一進入該模塊時,就將SPECIFICATION項在數據庫中存儲的值動態顯示出來,先在Form4.5中建立一個PRCEDURE,命名為DYN_LIST:

  然后在FORM的WHEN-NEW

  -FORM-INSTANCE觸發子中加入一行:

  DYN_LIST;

  ----這樣一進入該FMX,就會動態刷新該列表。除此之外,SPECIFICATION數據項改為列表項。

  ----④ 當顯示多條記錄且數據項特別多時,如何組織錄入及顯示界面:

  ---- PRN代碼及設備代碼在畫布1(CONTENT型)上,其它數據項在畫布2(STACK型)上,所有數據項為一個表的列或一個塊的數據項。在拉動水平滾動條時或用TAB或敲回車鍵時,將看到全部數據項。這種排布方法適用于數據項特別多又想顯示多條記錄時用。主要制作順序為:先建立兩個畫布,畫布1(CONTENT型),畫布2(STACK型),然后建立塊,選畫布時用畫布1,這樣所有項都顯示在畫布1上,然后選中除PRN代碼及設備代碼之外的所有數據項,選TOOLS菜單下的PROPERTIES選項,將這些數據項的CANVAS屬性選為畫布2(STACK型),然后調整整體位置就可以了。

  ----⑤ 如何在FORM的受限觸發子中提交保存數據

  ----在FORM中很多觸發子是不能用COMMIT WORK語句的,當你在該觸發子中使用了UPDATE,DELETE等操作并想立即存盤時,就需要COMMIT WORK語句了。首先在服務器端建立DB_SQL_COMMIT這個過程。

  ----然后在FORM中該觸發子中調用過程DB_SQL_COMMIT;就可以了,當然你可以根據自己需要將該過程加入參數,這樣通過參數可以得到執行DML語句的權限。

  ----⑥ 如何在FORM中實現某數據項自動按記錄序號加一操作

  ----設塊名為VO,要操作的數據項為VO_ID,在該塊中建立塊級觸發子WHEN-CREATE- RECORD,加入如下代碼:

  :VO_ID:=:System.Trigger_Record;

  ----這樣每當生成新記錄時VO_ID就會自動加一了。

  ----⑦ 如何在一個FORM中調用另一個FORM,或在一個塊中調用另一個塊時顯示特定的記錄有時用戶會要求在調用另一個FORM時,只顯示相關的記錄,舉例如下,在一個FORM的塊中有一個按鈕,在按鈕觸發子中加入如下代碼:

  

 

      DECLARE
  PM

  PARAMLIST;

  BEGIN

  PM:=GET_PARAMETER_LIST('PM');

  IF NOT ID_NULL(PM) THEN

  DESTROY_PARAMETER_LIST('PM');

  END IF;

  PM:=CREATE_PARAMETER_LIST('PM');

  ......................

  ADD_PARAMETER(PM,'THE_WHERE',

  TEXT_PARAMETER,'EM_NAME=''EM4''

  AND EM_PROJECT_NAME=''支架預制''');

  OPEN_FORM('PAYMENT',ACTIVATE,session,PM);

  END;
 


  ----其中EM_NAME,EM_PROJECT_NAME為本FORM某塊的數據項,PAYMENT為要調用的FORM模塊。這樣通過傳遞參數列表就可以得到想要的結果。在FORM. PAYMENT.FMB中,建立一參數THE_WHERE,CHAR型,長1000,然后在PAYMENT.FMB中建立FORM級觸發子WHEN-NEW-FORM-INSTANCE,在該觸發子中加入以下語句:

  

      IF :PARAMETER.THE_WHERE IS NOT NULL THEN
  SET_BLOCK_PROPERTY('PAYMENT',

  DEFAULT_WHERE,:PARAMETER.THE_WHERE);

  END IF;
 
  ----其中PAYMENT為要顯示的塊,這樣通過參數傳遞就得到想要的某些特定條件的數據了。

 

  ----⑧ 在FORM中當有主從塊時,連續輸入記錄如何避免被不斷的提示保存:

  ----每輸入一條主記錄和若干條該主記錄的從記錄后,此時再導航到主塊輸下一條記錄,FORM就會提示你是否要保存記錄,而你并不希望FORM提示,讓它自動保存,此時你可以到Program Units中找到過程PROCEDURE Clear_All_Master_Details,然后在這個過程中找到語句

  三.數據庫管理

  ----① 在刪除一個表中的全部數據時,須使用TRUNCATE table 表名;因為用DROP table,DELETE * FROM 表名時,TABLESPACE表空間該表的占用空間并未釋放,反復幾次DROP,DELETE操作后,該TABLESPACE上百兆的空間就被耗光了。

  ----② 數據庫文件的移動方法

  ----當想將數據庫文件移動到另外一個目錄下時,可以用ALTER DATABASE命令來移動(比ALTER TABLESPACE適用性強):

  ----1. 使用SERVER MANAGER關閉實例.

  

     SVRMGR > connect internal;
  SVRMGR > shutdown;

  SVRMGR >exit;
 
   ----2. 使用操作系統命令來移動數據庫文件位置(假設這里操作系統為SOLARIS 2.6). 在UNIX中用 mv命令可以把文件移動到新的位置,

 

  #mv /ora13/orarun/document.dbf /ora12/orarun

  ----3. 裝載數據庫并用alter database命令來改變數據庫中的文件名.

  

      SVRMGR > connect internal;
  SVRMGR > startup mount RUN73;

  SVRMGR > alter database rename file

  > ‘/ ora13/orarun/document.dbf’

  > ‘/ ora12/orarun/document.dbf’;
 
  ----4. 啟動實例.

 

  SVRMGR > alter database open;

  ----(huangfutong@china.com)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97在线视频精品| 亚洲天堂男人天堂女人天堂| 国产一区二区三区在线| 日av在线播放中文不卡| 欧美电影免费观看电视剧大全| 日韩在线精品视频| 日韩av手机在线观看| 日韩一区视频在线| 91成人国产在线观看| 日韩av有码在线| 久久影院中文字幕| 日本亚洲欧美成人| 午夜精品久久久久久久99黑人| 亚洲美女免费精品视频在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 国产亚洲一级高清| 中文字幕精品在线| 日韩电影中文字幕在线| 欧美日韩国产丝袜美女| 久久影视电视剧凤归四时歌| 亚洲精品日韩久久久| 日韩毛片中文字幕| 亚洲一区二区三区sesese| 91高潮在线观看| 中文字幕欧美日韩va免费视频| 久久亚洲影音av资源网| 国产免费成人av| 精品亚洲国产成av人片传媒| 日本精品性网站在线观看| 国产精品永久在线| 欧美日韩精品在线播放| 久久久久久久999精品视频| www.国产精品一二区| 亚洲第一天堂无码专区| 日韩在线欧美在线国产在线| 国产精品私拍pans大尺度在线| 成人黄色av网站| 91欧美激情另类亚洲| 精品国产鲁一鲁一区二区张丽| 国产精品久久一| 亚洲黄在线观看| 亚洲黄色有码视频| 国产精品免费小视频| 亚洲成人久久一区| 在线观看日韩视频| 日韩电影大片中文字幕| 97国产精品视频| 91久久综合亚洲鲁鲁五月天| 国产91精品黑色丝袜高跟鞋| 精品中文字幕乱| 亚洲国产精品国自产拍av秋霞| 欧美精品免费看| 国产美女搞久久| 在线免费观看羞羞视频一区二区| 国产成人短视频| 亚洲国产三级网| 日韩中文字幕在线视频播放| 日本国产一区二区三区| 亚洲一区国产精品| 粉嫩av一区二区三区免费野| 久久精品视频导航| 日韩中文字幕久久| 久久免费高清视频| 欧美激情第一页xxx| zzjj国产精品一区二区| 久久久久久亚洲精品中文字幕| 欧美高跟鞋交xxxxhd| 亚洲福利视频久久| 岛国av一区二区| 国产精品入口日韩视频大尺度| 国产精品第100页| 亚洲肉体裸体xxxx137| 中文字幕日韩电影| 国产精品一区二区女厕厕| 成人日韩在线电影| 国产在线日韩在线| 亚洲一区二区三区视频播放| 欧美日韩国产色视频| 欧洲成人午夜免费大片| 国产97在线视频| 九九热这里只有精品免费看| 午夜精品一区二区三区av| 日韩av在线影视| 欧美疯狂xxxx大交乱88av| 97精品久久久| 日韩中文字幕网| 18一19gay欧美视频网站| 91精品免费久久久久久久久| 欧美日韩不卡合集视频| 亚洲视频在线播放| 亚洲乱码一区av黑人高潮| 成人久久一区二区三区| 伊人精品在线观看| 国产精品自产拍高潮在线观看| 日本午夜人人精品| 日韩欧美在线中文字幕| 国产精品电影久久久久电影网| 亚洲欧美日韩天堂| 91精品国产91久久久久久久久| 日韩高清中文字幕| 亚洲国产精品一区二区久| 国产精品www网站| 日韩在线观看免费高清完整版| 国产精品人人做人人爽| 国产午夜一区二区| 欧美精品电影免费在线观看| 欧美高清在线视频观看不卡| 亚洲第五色综合网| 成人伊人精品色xxxx视频| 亚洲精品视频中文字幕| 欧洲成人在线观看| 欧美专区在线视频| 免费不卡在线观看av| 欧美一区二区三区艳史| 91福利视频在线观看| 91国产一区在线| 亚洲成人亚洲激情| 日韩欧美极品在线观看| 日韩性xxxx爱| 欧美中文字幕视频在线观看| 欧美黑人一区二区三区| 热re91久久精品国99热蜜臀| 亚洲人精选亚洲人成在线| 91中文字幕一区| 国产美女91呻吟求| 久久成人国产精品| 在线观看视频亚洲| 国产精品美女久久| 日韩成人久久久| 亚洲高清色综合| 中文精品99久久国产香蕉| 欧美老女人在线视频| 久久久亚洲精品视频| 国产高清视频一区三区| 国产91免费观看| 91国自产精品中文字幕亚洲| 高清一区二区三区四区五区| 91精品国产91久久久久久吃药| 欧美极品少妇xxxxⅹ免费视频| 亚洲日韩欧美视频一区| 日韩美女免费线视频| 日韩hd视频在线观看| 欧美午夜www高清视频| 7777kkkk成人观看| 欧美激情极品视频| 在线观看久久av| 色噜噜狠狠狠综合曰曰曰88av| 欧美激情精品久久久久| www.久久久久久.com| 亚洲精品女av网站| 伊人久久综合97精品| 国产成人短视频| 亚洲日本欧美中文幕| 日韩最新中文字幕电影免费看| 日韩中文字幕网址| 欧美一区二区色| 福利一区视频在线观看| 午夜精品久久久久久久男人的天堂| 国内精品久久久久伊人av| 日韩精品视频在线观看网址| 国产一区二区三区日韩欧美| 成人精品一区二区三区电影免费| 亚洲女人被黑人巨大进入| 日韩在线播放视频|