<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Oracle數據庫開發技巧

    時間:2024-10-04 02:36:56 Oracle認證 我要投稿
    • 相關推薦

    Oracle數據庫開發技巧

      Oracle開發的過程中,有不少棘手的問題。以下是小編收集的Oracle數據庫開發技巧,希望大家認真閱讀!

      Oracle數據庫開發技巧

      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即可。SQL >@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)

    【Oracle數據庫開發技巧】相關文章:

    Oracle 數據庫查詢小技巧10-17

    學習Oracle數據庫技巧攻略08-16

    Oracle數據庫臨時表管理技巧06-15

    oracle數據庫開發規范具體條件10-23

    Oracle數據庫語句大全10-08

    ORACLE數據庫碎片的整理08-18

    oracle數據庫基本語句08-21

    Oracle數據庫認證層次08-29

    Oracle數據庫的基本介紹09-04

    Oracle數據庫SQLPLUS介紹10-09

    主站蜘蛛池模板: 亚洲无线观看国产精品| 亚洲精品国产精品乱码视色 | 国产a精品视频| 欧美精品亚洲日韩aⅴ| 亚洲精品免费视频| 国产成人精品手机在线观看| 日韩亚洲精品福利| 国产精品户外野外| 国产精品欧美一区二区三区不卡 | 国产一区麻豆剧传媒果冻精品| 99久久99久久久精品齐齐| 亚洲国产精品久久久天堂| 久热精品视频第一页| 国产精品亚洲玖玖玖在线观看| 免费91麻豆精品国产自产在线观看 | 99久久精品影院老鸭窝| 亚洲AV成人无码久久精品老人| 精品一区二区三区免费视频| 91精品成人免费国产片| 国产精品91在线| 2021精品国产综合久久| 国产乱码精品一品二品| 久久精品国产亚洲av日韩| 亚洲AV永久纯肉无码精品动漫| 日本精品自产拍在线观看中文| 久久精品国产精品亚洲| 精品国产一级在线观看 | 欧美日韩精品一区二区三区不卡 | 久久精品欧美日韩精品| 亚洲精品无码成人片久久| 日韩午夜高清福利片在线观看欧美亚洲精品suv| 国产高清在线精品一本大道| 在线人成精品免费视频| 亚洲综合国产精品| 99久久精品国产毛片| 亚洲精品成人av在线| 四虎国产精品免费入口| 91精品在线国产| 国产精品欧美亚洲韩国日本久久 | 国产99视频精品免视看7| 拍国产乱人伦偷精品视频|