淺談Oracle數據庫開(kāi)發(fā)技術(shù)

時(shí)間:2022-06-28 04:44:24 數據庫操作系統 我要投稿
  • 相關(guān)推薦

淺談Oracle數據庫開(kāi)發(fā)技術(shù)

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

  一. 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語(yǔ)句后就可以顯示所有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語(yǔ)句后就可以刪除所有DRAWING和DSNO相同且重復的記錄。

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

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

  SQL >SPOOL ON.SQL

  SQL >SELECT ‘ALTER VIEW ‘||TNAME||’

  COMPILE;’ FROM TAB;

  SQL >SPOOL OFF

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

  當然,授權和創(chuàng )建同義詞也可以快速進(jìn)行,如:

  SQL >SELECT ‘GRANT SELECT ON ’

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

  SQL >SELECT ‘CREATE SYNONYM

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

 、 用外聯(lián)接提高表連接的查詢(xún)速度

  在作表連接(常用于視圖)時(shí),常使用以下方法來(lái)查詢(xún)數據:

  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要進(jìn)行一條一條的比較,共需要10000*10000次比較后,才能得到結果。該用外聯(lián)接后,可以縮短到1分左右的時(shí)間。

  ----⑤ 怎樣在數據庫觸發(fā)器中使用列的新值與舊值

  ----在數據庫觸發(fā)器中幾乎總是要使用觸發(fā)器基表的列值,如果某條語(yǔ)句需要某列修改前的值,使用:OLD就可以了,使用某列修改后的新值,用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。

  二.ORACLE DEVELOPER 2000使用技巧:

  ----① 改變FORM(FMX模塊)運行時(shí)的Runform4.5的題頭:

  ----DEVELOPER2000中FMX默認題頭為:Developer/2000 Forms Runtime for Windows 95 / NT 你可以改為自己定義的標題,

  ----1. 在Form級觸發(fā)器中添加觸發(fā)WHEN-NEW-FORM-INSTANCE

  ----2. 在此觸發(fā)器中寫(xiě)如下代碼:

  set_window_property(FORMS_MDI_WINDOW,TITLE,'POINT

  SYSTEM 歡迎使用');

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

  ----在創(chuàng )建自己的菜單時(shí),最后選項總有window項,下面介紹如何去掉它,

  ----1. 創(chuàng )建一個(gè)Menu

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

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

  ----Menu Item Type:Magic

  Command Type:Null

  Magic Item:Window

  Lable:為空

  ----③ 怎樣創(chuàng )建動(dòng)態(tài)下拉列表List

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

  ----有塊EBOP_CABLE_ACCOUNT,下有SPECIFICATION數據項,當一進(jìn)入該模塊時(shí),就將SPECIFICATION項在數據庫中存儲的值動(dòng)態(tài)顯示出來(lái),先在Form4.5中建立一個(gè)PRCEDURE,命名為DYN_LIST:

  然后在FORM的WHEN-NEW

  -FORM-INSTANCE觸發(fā)子中加入一行:

  DYN_LIST;

  ----這樣一進(jìn)入該FMX,就會(huì )動(dòng)態(tài)刷新該列表。除此之外,SPECIFICATION數據項改為列表項。

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

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

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

  ----在FORM中很多觸發(fā)子是不能用COMMIT WORK語(yǔ)句的,當你在該觸發(fā)子中使用了UPDATE,DELETE等操作并想立即存盤(pán)時(shí),就需要COMMIT WORK語(yǔ)句了。首先在服務(wù)器端建立DB_SQL_COMMIT這個(gè)過(guò)程。

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

  ----⑥ 如何在FORM中實(shí)現某數據項自動(dòng)按記錄序號加一操作

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

  :VO_ID:=:System.Trigger_Record;

  ----這樣每當生成新記錄時(shí)VO_ID就會(huì )自動(dòng)加一了。

  ----⑦ 如何在一個(gè)FORM中調用另一個(gè)FORM,或在一個(gè)塊中調用另一個(gè)塊時(shí)顯示特定的記錄有時(shí)用戶(hù)會(huì )要求在調用另一個(gè)FORM時(shí),只顯示相關(guān)的記錄,舉例如下,在一個(gè)FORM的塊中有一個(gè)按鈕,在按鈕觸發(fā)子中加入如下代碼:

  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模塊。這樣通過(guò)傳遞參數列表就可以得到想要的結果。在FORM. PAYMENT.FMB中,建立一參數THE_WHERE,CHAR型,長(cháng)1000,然后在PAYMENT.FMB中建立FORM級觸發(fā)子WHEN-NEW-FORM-INSTANCE,在該觸發(fā)子中加入以下語(yǔ)句:

  IF :PARAMETER.THE_WHERE IS NOT NULL THEN

  SET_BLOCK_PROPERTY('PAYMENT',

  DEFAULT_WHERE,:PARAMETER.THE_WHERE);

  END IF;

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

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

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

  三.數據庫管理

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

  ----② 數據庫文件的移動(dòng)方法

  ----當想將數據庫文件移動(dòng)到另外一個(gè)目錄下時(shí),可以用ALTER DATABASE命令來(lái)移動(dòng)(比ALTER TABLESPACE適用性強):

  ----1. 使用SERVER MANAGER關(guān)閉實(shí)例.

  SVRMGR > connect internal;

  SVRMGR > shutdown;

  SVRMGR >exit;

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

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

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

  SVRMGR > connect internal;

  SVRMGR > startup mount RUN73;

  SVRMGR > alter database rename file

  > ‘/ ora13/orarun/document.dbf’

  > ‘/ ora12/orarun/document.dbf’;

  ----4. 啟動(dòng)實(shí)例.

  SVRMGR > alter database open;

  ----(huangfutong@china.com)

【淺談Oracle數據庫開(kāi)發(fā)技術(shù)】相關(guān)文章:

職業(yè)素養的Oracle數據庫課程考試改革論文07-03

淺談?dòng)嬎銠C軟件開(kāi)發(fā)與數據庫管理論文07-03

淺談教材資源的開(kāi)發(fā)與利用07-01

淺談?dòng)嬎銠C軟件開(kāi)發(fā)技術(shù)的發(fā)展應用論文07-04

淺談?dòng)嬎銠C軟件開(kāi)發(fā)中的分層技術(shù)應用論文07-03

淺談?dòng)嬎銠C軟件開(kāi)發(fā)的信息系統包裝技術(shù)論文07-03

電腦數據庫開(kāi)發(fā)管理求職信07-04

淺談信息技術(shù)教法06-13

淺談高職教育教材開(kāi)發(fā)的研究論文07-04

從興電子數據庫開(kāi)發(fā)工程師薪水多少07-14

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆