王牌对王牌第一季综艺,黄视频在线观看网站,世界一级毛片,成人黄色免费看

薈聚奇文、博采眾長、見賢思齊
當(dāng)前位置:公文素材庫 > 計(jì)劃總結(jié) > 工作總結(jié) > ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)

ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)

網(wǎng)站:公文素材庫 | 時(shí)間:2019-05-29 15:09:44 | 移動(dòng)端:ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)

ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)

ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)

----ORACLE數(shù)據(jù)庫作為大型數(shù)據(jù)庫管理系統(tǒng),近年來一直占有世界上高端數(shù)據(jù)庫的最大份額,其強(qiáng)大而完善的數(shù)據(jù)庫管理功能,以及ORACLE公司推陳出新的不斷努力,一直成為IT業(yè)界矚目的焦點(diǎn)。嶺澳核電站的數(shù)據(jù)庫平臺(tái)采用了ORACLE7.3作為后端平臺(tái),前端選擇了ORACLE公司的DEVELOPER201*及DESIGNER201*作為開發(fā)工具,采用了目前流行的

CLIENT/SERVER模式。本人在ORACLE系統(tǒng)的開發(fā)中,就ORACLE的整套開發(fā)工具提出一些自

己的體會(huì),供同行參考。

----一.ORACLESQLPLUS使用技巧:----①查找重復(fù)記錄:

SELECTDRAWING,DSNOFROMEM5_PIPE_PREFABWHEREROWID!=(SELECTMAX(ROWID)FROMEM5_PIPE_PREFABD

WHEREEM5_PIPE_PREFAB.DRAWING=D.DRAWINGANDEM5_PIPE_PREFAB.DSNO=D.DSNO);

----執(zhí)行上述SQL語句后就可以顯示所有DRAWING和DSNO相同且重復(fù)的記錄。----刪除重復(fù)記錄:

DELETEFROMEM5_PIPE_PREFAB

WHEREROWID!=(SELECTMAX(ROWID)FROMEM5_PIPE_PREFABD

WHEREEM5_PIPE_PREFAB.DRAWING=D.DRAWINGANDEM5_PIPE_PREFAB.DSNO=D.DSNO);

----執(zhí)行上述SQL語句后就可以除所有DRAWING和DSNO相同且重復(fù)的記錄。----②快速編譯所有視圖

----當(dāng)在把數(shù)據(jù)庫倒入到新的服務(wù)器上后(數(shù)據(jù)庫重建),需要將視圖重新編譯一遍,因?yàn)樵摫砜臻g視圖到其它表空間的表的連接會(huì)出現(xiàn)問題,可以利用PL/SQL的語言特性,快速編譯。

SQL>SPOOLON.SQL

SQL>SELECT‘ALTERVIEW‘||TNAME||’COMPILE;’FROMTAB;SQL>SPOOLOFF然后執(zhí)行ON.SQL即可。SQL>@ON.SQL

當(dāng)然,授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行,如:SQL>SELECT‘GRANTSELECTON’||TNAME||’TOUSERNAME;’FROMTAB;SQL>SELECT‘CREATESYNONYM

‘||TNAME||’FORUSERNAME.’||TNAME||’;’FROMTAB;③用外聯(lián)接提高表連接的查詢速度

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

WHEREA.PAY_NONOTIN(SELECTPAY_NOFROMBWHEREVALUE>=1201*0);

----但是若表A有10000條記錄,表B有10000條記錄,則要用掉30分鐘才能查完,主要因?yàn)镹OTIN要進(jìn)行一條一條的比較,共需要10000*10000次比較后,才能得到結(jié)果。該用外

聯(lián)接后,可以縮短到1分左右的時(shí)間:SELECTPAY_NO,PROJECT_NAMEFROMA,B

WHEREA.PAY_NO=B.PAY_NO(+)ANDB.PAY_NOISNULLANDB.VALUE>=1201*;

----④怎樣讀寫文本型操作系統(tǒng)文件

----在PL/SQL3.3以上的版本中,UTL_FILE包允許用戶通過PL/SQL讀寫操作系統(tǒng)文件。如下:DECALRE

FILE_HANDLEUTL_FILE.FILE_TYPE;BEGIN

FILE_HANDLE:=UTL_FILE.FOPEN(‘C:\\’,’TEST.TXT’,’A’);

UTL_FILE.PUT_LINE(FILE_HANDLE,’HELLO,IT’SATESTTXTFILE’);UTL_FILE.FCLOSE(FILE_HANDLE);END;

----相關(guān)UTL_FILE數(shù)據(jù)庫包詳細(xì)信息可以參見相關(guān)資料。----⑤怎樣在數(shù)據(jù)庫觸發(fā)器中使用列的新值與舊值

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

----二.ORACLEDEVELOPER201*使用技巧:

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

----DEVELOPER201*中FMX默認(rèn)題頭為:Developer/201*FormsRuntimeforWindows

95/NT你可以改為自己定義的標(biāo)題,

----1.在Form級觸發(fā)器中添加觸發(fā)WHEN-NEW-FORM-INSTANCE----2.在此觸發(fā)器中寫如下代碼:

set_window_property(FORMS_MDI_WINDOW,TITLE,"POINTSYSTEM歡迎使用");

----②如何隱藏菜單中的window選項(xiàng):

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

----2.在Menu中建立一個(gè)Item,命名為WINDOW。----3.設(shè)置該Item屬性如下:----

MenuItemType:MagicCommandType:NullMagicItem:WindowLable:為空

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

----Developer201*中的列表是通過設(shè)置相關(guān)屬性而完成數(shù)據(jù)項(xiàng)的列表設(shè)置的,但那

只是靜態(tài)的,有時(shí)你想讓某項(xiàng)成為動(dòng)態(tài)的列表,隨輸入數(shù)據(jù)的改變而改變,就需要?jiǎng)邮秩ゾ巶(gè)小程序。下面詳細(xì)介紹怎樣去做:

----有塊EBOP_CABLE_ACCOUNT,下有SPECIFICATION數(shù)據(jù)項(xiàng),當(dāng)一進(jìn)入該模塊時(shí),就將

SPECIFICATION項(xiàng)在數(shù)據(jù)庫中存儲(chǔ)的值動(dòng)態(tài)顯示出來,先在Form4.5中建立一個(gè)PRCEDURE

,命名為DYN_LIST:

PROCEDUREDYN_LISTISCURSORC1IS

SELECTDISTINCT(SPECIFICATION)FROMEBOP_CABLE_ACCOUNT;CNTNUMBER;iNUMBER;TNAMEEBOP_CABLE_

ACCOUNT.SPECIFICATION%TYPE;BEGIN

CLEAR_LIST("EBOP_CABLE_ACCOUNT.SPECIFICATION");SELECTCOUNT(DISTINCT

(SPECIFICATION))INTOCNTFROMEBOP_CABLE_ACCOUNT;openC1;

FORiIN1..CNTLOOP

FETCHC1INTOTNAME;EXITWHENC1%NOTFOUNDORC1%NOTFOUNDISNULL;

ADD_LIST_ELEMENT("EBOP_CABLE_ACCOUNT

.SPECIFICATION",i,TNAME,TNAME);ENDLOOP;

DELETE_LIST_ELEMENT

("EBOP_CABLE_ACCOUNT.SPECIFICATION",CNT+1);CLOSEC1;END;

然后在FORM的WHEN-NEW

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

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

----④當(dāng)顯示多條記錄且數(shù)據(jù)項(xiàng)特別多時(shí),如何組織錄入及顯示界面:----如上圖所示,PRN代碼及設(shè)備代碼在畫布1(CONTENT型)上,其它數(shù)據(jù)項(xiàng)在畫布2(STACK型)上,所有數(shù)據(jù)項(xiàng)為一個(gè)表的列或一個(gè)塊的數(shù)據(jù)項(xiàng)。在拉動(dòng)水平滾動(dòng)條時(shí)或用TAB或敲回車鍵時(shí),將看到全部數(shù)據(jù)項(xiàng)。這種排布方法適用于數(shù)據(jù)項(xiàng)特別多又想顯示多條記錄時(shí)用。主要制作順序?yàn)椋合冉蓚(gè)畫布,畫布1(CONTENT型),畫布2(STACK型),然后

建立塊,選畫布時(shí)用畫布1,這樣所有項(xiàng)都顯示在畫布1上,然后選中除PRN代碼及設(shè)備代碼之外的所有數(shù)據(jù)項(xiàng),選TOOLS菜單下的PROPERTIES選項(xiàng),將這些數(shù)據(jù)項(xiàng)的CANVAS屬性選

為畫布2(STACK型),然后調(diào)整整體位置就可以了。----⑤如何在FORM的受限觸發(fā)子中提交保存數(shù)據(jù)

----在FORM中很多觸發(fā)子是不能用COMMITWORK語句的,當(dāng)你在該觸發(fā)子中使用了UPDA

TE,DELETE等操作并想立即存盤時(shí),就需要COMMITWORK語句了。首先在服務(wù)器端建立D

B_SQL_COMMIT這個(gè)過程(采用ORACLE7.3數(shù)據(jù)庫),PROCEDUREDB_SQL_COMMITISsource_cursorinteger;ignoreinteger;V7NUMBER:=2;BEGIN

source_cursor:=dbms_sql.open_cursor;

dbms_sql.parse(source_cursor,"COMMITWORK",V7);ignore:=dbms_sql.execute(source_cursor);DBMS_SQL.CLOSE_CURSOR(source_cursor);END;

----然后在FORM中該觸發(fā)子中調(diào)用過程DB_SQL_COMMIT;就可以了,當(dāng)然你可以根據(jù)自己

需要將該過程加入?yún)?shù),這樣通過參數(shù)可以得到執(zhí)行DML語句的權(quán)限。----⑥如何在FORM中實(shí)現(xiàn)某數(shù)據(jù)項(xiàng)自動(dòng)按記錄序號加一操作

----設(shè)塊名為VO,要操作的數(shù)據(jù)項(xiàng)為VO_ID,在該塊中建立塊級觸發(fā)子WHEN-CREATE-REC

ORD,加入如下代碼:

:VO_ID:=:System.Trigger_Record;

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

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

PM:=GET_PARAMETER_LIST("PM");IFNOTID_NULL(PM)THEN

DESTROY_PARAMETER_LIST("PM");ENDIF;

PM:=CREATE_PARAMETER_LIST("PM");......................

ADD_PARAMETER(PM,"THE_WHERE",TEXT_PARAMETER,"EM_NAME=""EM4""ANDEM_PROJECT_NAME=""支架預(yù)制""");

OPEN_FORM("PAYMENT",ACTIVATE,SESSION,PM);END;

----其中EM_NAME,EM_PROJECT_NAME為本FORM某塊的數(shù)據(jù)項(xiàng),PAYMENT為要調(diào)用的FORM模塊。這樣通過傳遞參數(shù)列表就可以得到想要的結(jié)果。在FORMPAYMENT.FMB中,建立一參數(shù)THE_WHERE,CHAR型,長1000,然后在PAYMENT.FMB中建立FORM級觸發(fā)子WHEN-NEW-F

ORM-INSTANCE,在該觸發(fā)子中加入以下語句:

IF:PARAMETER.THE_WHEREISNOTNULLTHENSET_BLOCK_PROPERTY("PAYMENT",

DEFAULT_WHERE,:PARAMETER.THE_WHERE);ENDIF;

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

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

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

Clear_Block(ASK_COMMIT);

----將其改為Clear_Block(DO_COMMIT);就可以了。----⑨在Report開始時(shí)選擇排序項(xiàng):

----在報(bào)表開始的ParameterForm中選擇報(bào)表按哪個(gè)數(shù)據(jù)項(xiàng)排序,----1.先在USERPARAMETER中創(chuàng)建SORT參數(shù),為字符型,長20。

----2.初始值選’責(zé)任方’,然后將這四個(gè)值輸入到DATASELECTION中,形成列表。----3.然后處理QUERY中的SQL語句:selectCHARGER,FCO_NO,EM_NAME,FCO_NO,DESCRIPTION,FCR_POINTfromFCR_MAIN

ORDERBYDECODE(:SORT,"責(zé)任方",CHARGER,"FCO號",FCO_NO,"FCR號",FCR_NO,"FCR號",EM_NAME)

----⑩在Developer201*中如何讀寫操作系統(tǒng)文件

----在用Developer201*的開發(fā)工具開發(fā)應(yīng)用程序時(shí),經(jīng)常碰到需要讀寫外部文件的問

題,可以用ORACLE帶的包TEXT_IO來完成這項(xiàng)需求。例如:DECLARE

IN_FILETEXT_IO.FILE_TYPE;OUT_FILETEXT_IO.FILE_TYPE;LINE_BUFERVARCHAR2(80);

/*若不用IN_FILE,可以將各字段聯(lián)接在一起賦值給此變量*/BEGIN

IN_FILE:=TEXT_IO.FOPEN(‘C:\\TEMP\\TEST1.TXT’,’r’);OUT_FILE:=TEXT_IO.FOPEN(‘C:\\TEMP\\TEST2.TXT’,’w+’);LOOP

TEXT_IO.GET_LINE(IN_FILE,LINE_BUFER);TEXT_IO.PUT(LINE_BUFER);TEXT_IO.NEW_LINE;

TEXT_IO.PUT_LINE(OUT_FILE,LINE_BUFER);ENDLOOP;EXCEPTION

WHENno_data_foundTHEN

TEXT_IO.PUT_LINE(‘CLOSINGTHEFILE,PLEASEWAITING....’);TEXT_IO.FCLOSE(IN_FILE);TEXT_IO.FCLOSE(OUT_FILE);END;

----三.數(shù)據(jù)庫管理

----①在刪除一個(gè)表中的全部數(shù)據(jù)時(shí),須使用TRUNCATETABLE表名;因?yàn)橛肈ROPTAB

LE,DELETE*FROM表名時(shí),TABLESPACE表空間該表的占用空間并未釋放,反復(fù)幾次DR

OP,DELETE操作后,該TABLESPACE上百兆的空間就被耗光了。----②數(shù)據(jù)庫文件的移動(dòng)方法

----當(dāng)想將數(shù)據(jù)庫文件移動(dòng)到另外一個(gè)目錄下時(shí),可以用ALTERDATABASE命令來移動(dòng)(

比ALTERTABLESPACE適用性強(qiáng)):

----1.使用SERVERMANAGER關(guān)閉實(shí)例.SVRMGR>connectinternal;SVRMGR>shutdown;SVRMGR>exit;

----2.使用操作系統(tǒng)命令來移動(dòng)數(shù)據(jù)庫文件位置(假設(shè)這里操作系統(tǒng)為SOLARIS2.6).

在UNIX中用mv命令可以把文件移動(dòng)到新的位置,

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

----3.裝載數(shù)據(jù)庫并用alterdatabase命令來改變數(shù)據(jù)庫中的文件名.SVRMGR>connectinternal;SVRMGR>startupmountRUN73;

SVRMGR>alterdatabaserenamefile>‘/ora13/orarun/document.dbf’>‘/ora12/orarun/document.dbf’;----4.啟動(dòng)實(shí)例.

SVRMGR>alterdatabaseopen;----ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)

擴(kuò)展閱讀:ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)

ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)嶺澳核電有限公司黃福同

----ORACLE數(shù)據(jù)庫作為大型數(shù)據(jù)庫管理系統(tǒng),近年來一直占有世界上高端數(shù)據(jù)庫的最大

份額,其強(qiáng)大而完善的數(shù)據(jù)庫管理功能,以及ORACLE公司推陳出新的不斷努力,一直成

為IT業(yè)界矚目的焦點(diǎn)。嶺澳核電站的數(shù)據(jù)庫平臺(tái)采用了ORACLE7.3作為后端平臺(tái),前端選

擇了ORACLE公司的DEVELOPER201*及DESIGNER201*作為開發(fā)工具,采用了目前流行的

CLIENT/SERVER模式。本人在ORACLE系統(tǒng)的開發(fā)中,就ORACLE的整套開發(fā)工具提出一些自己的體會(huì),供同行參考。

----一.ORACLESQLPLUS使用技巧:----①查找重復(fù)記錄:

SELECTDRAWING,DSNOFROMEM5_PIPE_PREFABWHEREROWID!=(SELECTMAX(ROWID)FROMEM5_PIPE_PREFABD

WHEREEM5_PIPE_PREFAB.DRAWING=D.DRAWINGANDEM5_PIPE_PREFAB.DSNO=D.DSNO);

----執(zhí)行上述SQL語句后就可以顯示所有DRAWING和DSNO相同

且重復(fù)的記錄。----刪除重復(fù)記錄:

DELETEFROMEM5_PIPE_PREFAB

WHEREROWID!=(SELECTMAX(ROWID)FROMEM5_PIPE_PREFABD

WHEREEM5_PIPE_PREFAB.DRAWING=D.DRAWINGANDEM5_PIPE_PREFAB.DSNO=D.DSNO);

----執(zhí)行上述SQL語句后就可以除所有DRAWING和DSNO相同且重復(fù)的記錄。

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

----當(dāng)在把數(shù)據(jù)庫倒入到新的服務(wù)器上后(數(shù)據(jù)庫重建),需要將視圖重新編譯一遍,因

為該表空間視圖到其它表空間的表的連接會(huì)出現(xiàn)問題,可以利用PL/SQL的語言特性,快速編譯。

SQL>SPOOLON.SQL

SQL>SELECT‘ALTERVIEW‘||TNAME||’COMPILE;’FROMTAB;SQL>SPOOLOFF然后執(zhí)行ON.SQL即可。SQL>@ON.SQL

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

SQL>SELECT‘GRANTSELECTON’||TNAME||’TOUSERNAME;’FROMTAB;SQL>SELECT‘CREATESYNONYM

‘||TNAME||’FORUSERNAME.’||TNAME||’;’FROMTAB;③用外聯(lián)接提高表連接的查詢速度

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

WHEREA.PAY_NONOTIN(SELECTPAY_NOFROMBWHEREVALUE>=1201*0);

----但是若表A有10000條記錄,表B有10000條記錄,則要用掉30分鐘才能查完,主要因

為NOTIN要進(jìn)行一條一條的比較,共需要10000*10000次比較后,才能得到結(jié)果。該用外

聯(lián)接后,可以縮短到1分左右的時(shí)間:SELECTPAY_NO,PROJECT_NAMEFROMA,B

WHEREA.PAY_NO=B.PAY_NO(+)ANDB.PAY_NOISNULLANDB.VALUE>=1201*;

----④怎樣讀寫文本型操作系統(tǒng)文件

----在PL/SQL3.3以上的版本中,UTL_FILE包允許用戶通過PL/SQL

讀寫操作系統(tǒng)文件。如下:DECALRE

FILE_HANDLEUTL_FILE.FILE_TYPE;BEGIN

FILE_HANDLE:=UTL_FILE.FOPEN(‘C:\\’,’TEST.TXT’,’A’);

UTL_FILE.PUT_LINE(FILE_HANDLE,’HELLO,IT’SATESTTXTFILE’);UTL_FILE.FCLOSE(FILE_HANDLE);END;

----相關(guān)UTL_FILE數(shù)據(jù)庫包詳細(xì)信息可以參見相關(guān)資料。----⑤怎樣在數(shù)據(jù)庫觸發(fā)器中使用列的新值與舊值

----在數(shù)據(jù)庫觸發(fā)器中幾乎總是要使用觸發(fā)器基表的列值,如果某條語句需要某列修改

前的值,使用:OLD就可以了,使用某列修改后的新值,用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。

----二.ORACLEDEVELOPER201*使用技巧:

----①改變FORM(FMX模塊)運(yùn)行時(shí)的Runform4.5的題頭:----DEVELOPER201*中FMX默認(rèn)題頭為:Developer/201*FormsRuntimeforWindows

95/NT你可以改為自己定義的標(biāo)題,

----1.在Form級觸發(fā)器中添加觸發(fā)WHEN-NEW-FORM-INSTANCE----2.在此觸發(fā)器中寫如下代碼:

set_window_property(FORMS_MDI_WINDOW,TITLE,"POINTSYSTEM歡迎使用");

----②如何隱藏菜單中的window選項(xiàng):

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

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

----2.在Menu中建立一個(gè)Item,命名為WINDOW。----3.設(shè)置該Item屬性如下:----

MenuItemType:MagicCommandType:NullMagicItem:WindowLable:為空

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

----Developer201*中的列表是通過設(shè)置相關(guān)屬性而完成數(shù)據(jù)項(xiàng)的列表設(shè)置的,但那

只是靜態(tài)的,有時(shí)你想讓某項(xiàng)成為動(dòng)態(tài)的列表,隨輸入數(shù)據(jù)的改變而改變,就需要?jiǎng)邮?/p>

去編個(gè)小程序。下面詳細(xì)介紹怎樣去做:

----有塊EBOP_CABLE_ACCOUNT,下有SPECIFICATION數(shù)據(jù)項(xiàng),當(dāng)一進(jìn)入該模塊時(shí),就將

SPECIFICATION項(xiàng)在數(shù)據(jù)庫中存儲(chǔ)的值動(dòng)態(tài)顯示出來,先在Form4.5中建立一個(gè)PRCEDURE,命名為DYN_LIST:PROCEDUREDYN_LISTISCURSORC1IS

SELECTDISTINCT(SPECIFICATION)FROMEBOP_CABLE_ACCOUNT;CNTNUMBER;iNUMBER;TNAMEEBOP_CABLE_

ACCOUNT.SPECIFICATION%TYPE;BEGIN

CLEAR_LIST("EBOP_CABLE_ACCOUNT.SPECIFICATION");SELECTCOUNT(DISTINCT

(SPECIFICATION))INTOCNTFROMEBOP_CABLE_ACCOUNT;openC1;

FORiIN1..CNTLOOPFETCHC1INTOTNAME;

EXITWHENC1%NOTFOUNDORC1%NOTFOUNDISNULL;ADD_LIST_ELEMENT("EBOP_CABLE_ACCOUNT

.SPECIFICATION",i,TNAME,TNAME);ENDLOOP;

DELETE_LIST_ELEMENT

("EBOP_CABLE_ACCOUNT.SPECIFICATION",CNT+1);CLOSEC1;END;

然后在FORM的WHEN-NEW

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

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

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

----如上圖所示,PRN代碼及設(shè)備代碼在畫布1(CONTENT型)上,其它數(shù)據(jù)項(xiàng)在畫布2(ST

ACK型)上,所有數(shù)據(jù)項(xiàng)為一個(gè)表的列或一個(gè)塊的數(shù)據(jù)項(xiàng)。在拉動(dòng)水平滾動(dòng)條時(shí)或用TAB或

敲回車鍵時(shí),將看到全部數(shù)據(jù)項(xiàng)。這種排布方法適用于數(shù)據(jù)項(xiàng)特別多又想顯示多條記錄

時(shí)用。主要制作順序?yàn)椋合冉蓚(gè)畫布,畫布1(CONTENT型),畫布2(STACK型),然后

建立塊,選畫布時(shí)用畫布1,這樣所有項(xiàng)都顯示在畫布1上,然后選中除PRN代碼及設(shè)備代

碼之外的所有數(shù)據(jù)項(xiàng),選TOOLS菜單下的PROPERTIES選項(xiàng),將這些數(shù)據(jù)項(xiàng)的CANVAS屬性選

為畫布2(STACK型),然后調(diào)整整體位置就可以了。----⑤如何在FORM的受限觸發(fā)子中提交保存數(shù)據(jù)

----在FORM中很多觸發(fā)子是不能用COMMITWORK語句的,當(dāng)你在該觸發(fā)子中使用了UPDA

TE,DELETE等操作并想立即存盤時(shí),就需要COMMITWORK語句了。首先在服務(wù)器端建立D

B_SQL_COMMIT這個(gè)過程(采用ORACLE7.3數(shù)據(jù)庫),PROCEDUREDB_SQL_COMMITISsource_cursorinteger;ignoreinteger;V7NUMBER:=2;BEGIN

source_cursor:=dbms_sql.open_cursor;

dbms_sql.parse(source_cursor,"COMMITWORK",V7);

ignore:=dbms_sql.execute(source_cursor);DBMS_SQL.CLOSE_CURSOR(source_cursor);END;

----然后在FORM中該觸發(fā)子中調(diào)用過程DB_SQL_COMMIT;就可以了,當(dāng)然你可以根據(jù)自己

需要將該過程加入?yún)?shù),這樣通過參數(shù)可以得到執(zhí)行DML語句的權(quán)限。

----⑥如何在FORM中實(shí)現(xiàn)某數(shù)據(jù)項(xiàng)自動(dòng)按記錄序號加一操作----設(shè)塊名為VO,要操作的數(shù)據(jù)項(xiàng)為VO_ID,在該塊中建立塊級觸發(fā)子WHEN-CREATE-RECORD,加入如下代碼:

:VO_ID:=:System.Trigger_Record;

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

----⑦如何在一個(gè)FORM中調(diào)用另一個(gè)FORM,或在一個(gè)塊中調(diào)用另一個(gè)塊時(shí)顯示特定的

記錄有時(shí)用戶會(huì)要求在調(diào)用另一個(gè)FORM時(shí),只顯示相關(guān)的記錄,舉例如下,在一個(gè)FORM

的塊中有一個(gè)按鈕,在按鈕觸發(fā)子中加入如下代碼:DECLAREPMPARAMLIST;BEGIN

PM:=GET_PARAMETER_LIST("PM");IFNOTID_NULL(PM)THEN

DESTROY_PARAMETER_LIST("PM");ENDIF;

PM:=CREATE_PARAMETER_LIST("PM");......................

ADD_PARAMETER(PM,"THE_WHERE",TEXT_PARAMETER,"EM_NAME=""EM4""ANDEM_PROJECT_NAME=""支架預(yù)制""");

OPEN_FORM("PAYMENT",ACTIVATE,SESSION,PM);END;

----其中EM_NAME,EM_PROJECT_NAME為本FORM某塊的數(shù)據(jù)項(xiàng),PAYMENT為要調(diào)用的FORM

模塊。這樣通過傳遞參數(shù)列表就可以得到想要的結(jié)果。在FORMPAYMENT.FMB中,建立一

參數(shù)THE_WHERE,CHAR型,長1000,然后在PAYMENT.FMB中建立FORM級觸發(fā)子WHEN-NEW-F

ORM-INSTANCE,在該觸發(fā)子中加入以下語句:IF:PARAMETER.THE_WHEREISNOTNULLTHENSET_BLOCK_PROPERTY("PAYMENT",

DEFAULT_WHERE,:PARAMETER.THE_WHERE);ENDIF;

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

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

----每輸入一條主記錄和若干條該主記錄的從記錄后,此時(shí)再導(dǎo)航到主塊輸下一條記錄

,F(xiàn)ORM就會(huì)提示你是否要保存記錄,而你并不希望FORM提示,讓它自動(dòng)保存,此時(shí)你可以

Program

Units

中找

到過程

PROCEDURE

Clear_All_Master_Details,然后在這個(gè)過程中找到語句

Clear_Block(ASK_COMMIT);

----將其改為Clear_Block(DO_COMMIT);就可以了。----⑨在Report開始時(shí)選擇排序項(xiàng):

----在報(bào)表開始的ParameterForm中選擇報(bào)表按哪個(gè)數(shù)據(jù)項(xiàng)排序,----1.先在USERPARAMETER中創(chuàng)建SORT參數(shù),為字符型,長20。

----2.初始值選’責(zé)任方’,然后將這四個(gè)值輸入到DATASELECTION中,形成列表。

----3.然后處理QUERY中的SQL語句:selectCHARGER,FCO_NO,EM_NAME,FCO

_NO,DESCRIPTION,FCR_POINTfromFCR_MAIN

ORDERBYDECODE(:SORT,"責(zé)任方",CHARGER,"FCO號",FCO_NO,"FCR號",FCR_NO,"FCR號",EM_NAME)----⑩在Developer201*中如何讀寫操作系統(tǒng)文件

----在用Developer201*的開發(fā)工具開發(fā)應(yīng)用程序時(shí),經(jīng)常碰到需要讀寫外部文件的問

題,可以用ORACLE帶的包TEXT_IO來完成這項(xiàng)需求。例如:DECLARE

IN_FILETEXT_IO.FILE_TYPE;OUT_FILETEXT_IO.FILE_TYPE;LINE_BUFERVARCHAR2(80);

/*若不用IN_FILE,可以將各字段聯(lián)接在一起賦值給此變量*/BEGIN

IN_FILE:=TEXT_IO.FOPEN(‘C:\\TEMP\\TEST1.TXT’,’r’);OUT_FILE:=TEXT_IO.FOPEN(‘C:\\TEMP\\TEST2.TXT’,’w+’);LOOP

TEXT_IO.GET_LINE(IN_FILE,LINE_BUFER);TEXT_IO.PUT(LINE_BUFER);TEXT_IO.NEW_LINE;

TEXT_IO.PUT_LINE(OUT_FILE,LINE_BUFER);ENDLOOP;EXCEPTION

WHENno_data_foundTHEN

TEXT_IO.PUT_LINE(‘CLOSINGTHEFILE,PLEASEWAITING....’);TEXT_IO.FCLOSE(IN_FILE);TEXT_IO.FCLOSE(OUT_FILE);END;

----三.數(shù)據(jù)庫管理

----①在刪除一個(gè)表中的全部數(shù)據(jù)時(shí),須使用TRUNCATETABLE表名;因?yàn)橛肈ROPTAB

LE,DELETE*FROM表名時(shí),TABLESPACE表空間該表的占用空間并未釋放,反復(fù)幾次DR

OP,DELETE操作后,該TABLESPACE上百兆的空間就被耗光了。----②數(shù)據(jù)庫文件的移動(dòng)方法

----當(dāng)想將數(shù)據(jù)庫文件移動(dòng)到另外一個(gè)目錄下時(shí),可以用ALTERDATABASE命令來移動(dòng)(

比ALTERTABLESPACE適用性強(qiáng)):----1.使用SERVERMANAGER關(guān)閉實(shí)例.SVRMGR>connectinternal;SVRMGR>shutdown;SVRMGR>exit;

----2.使用操作系統(tǒng)命令來移動(dòng)數(shù)據(jù)庫文件位置(假設(shè)這里操作系統(tǒng)為SOLARIS2.6).

在UNIX中用mv命令可以把文件移動(dòng)到新的位置,#mv/ora13/orarun/document.dbf/ora12/orarun

----3.裝載數(shù)據(jù)庫并用alterdatabase命令來改變數(shù)據(jù)庫中的文件名.SVRMGR>connectinternal;SVRMGR>startupmountRUN73;SVRMGR>alterdatabaserenamefile>‘/ora13/orarun/document.dbf’>‘/ora12/orarun/document.dbf’;----4.啟動(dòng)實(shí)例.

SVRMGR>alterdatabaseopen;----(huangfutong@china.com)----ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)----嶺澳核電有限公司黃福同----1999/9/28

MicrosoftSQLServer6.5的數(shù)據(jù)復(fù)制

友情提示:本文中關(guān)于《ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)》給出的范例僅供您參考拓展思維使用,ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié):該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時(shí)刪除。


ORACLE數(shù)據(jù)庫開發(fā)經(jīng)驗(yàn)總結(jié)》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://www.taixiivf.com/gongwen/712078.html