青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpp Fans

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  14 隨筆 :: 0 文章 :: 2 評論 :: 0 Trackbacks

http://www2.ccw.com.cn/tips/9911/110402_04.asp

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

---- 一. ORACLE SQL PLUS 使用技巧:

---- ①查找重復(fù)記錄:

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

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

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

SQL >SPOOL ON.SQL
SQL >SELECT ‘ALTER VIEW ‘||TNAME||’
COMPILE;’ FROM TAB;
SQL >SPOOL OFF
然后執(zhí)行ON.SQL即可。
SQL >@ON.SQL
當(dāng)然,授權(quán)和創(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)接提高表連接的查詢速度
在作表連接(常用于視圖)時,常使用以下方法來查詢數(shù)據(jù):
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分鐘才能查完,主要因?yàn)镹OT IN要進(jìn)行一條一條的比較,共需要10000*10000次比較后,才能得到結(jié)果。該用外聯(lián)接后,可以縮短到1分左右的時間:
SELECT PAY_NO,PROJECT_NAME
FROM A,B
WHERE A.PAY_NO=B.PAY_NO(+)
AND B.PAY_NO IS NULL
AND B.VALUE >=12000;
---- ④ 怎樣讀寫文本型操作系統(tǒng)文件
---- 在PL/SQL 3.3以上的版本中,UTL_FILE包允許用戶通過PL/SQL讀寫操作系統(tǒng)文件。如下:

DECALRE
FILE_HANDLE UTL_FILE.FILE_TYPE;
BEGIN
FILE_HANDLE:=UTL_FILE.FOPEN(
‘C:\’,’TEST.TXT’,’A’);
UTL_FILE.PUT_LINE(FILE_HANDLE,’
HELLO,IT’S A TEST TXT FILE’);
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。

---- 二.ORACLE DEVELOPER 2000使用技巧:

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

---- DEVELOPER2000中FMX默認(rèn)題頭為:Developer/2000 Forms Runtime for Windows 95 / NT 你可以改為自己定義的標(biāo)題,

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

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

set_window_property(FORMS_MDI_WINDOW,TITLE,'POINT
SYSTEM 歡迎使用');
---- ② 如何隱藏菜單中的window選項(xiàng):
---- 在創(chuàng)建自己的菜單時,最后選項(xiàng)總有window項(xiàng),下面介紹如何去掉它,

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

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

---- 3. 設(shè)置該Item屬性如下:

----

Menu Item Type:Magic
Command Type:Null
Magic Item:Window
Lable:為空

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

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

PROCEDURE DYN_LIST IS
CURSOR C1 IS
SELECT DISTINCT(SPECIFICATION)
FROM EBOP_CABLE_ACCOUNT;
CNT NUMBER;
i NUMBER;
TNAME EBOP_CABLE_
ACCOUNT.SPECIFICATION%TYPE;
BEGIN
CLEAR_LIST('EBOP_CABLE_
ACCOUNT.SPECIFICATION');
SELECT COUNT(DISTINCT
(SPECIFICATION)) INTO CNT FROM EBOP
_CABLE_ACCOUNT;
open C1;
FOR i IN 1..CNT LOOP
FETCH C1 INTO TNAME;
EXIT WHEN C1%NOTFOUND
OR C1%NOTFOUND IS NULL;
ADD_LIST_ELEMENT
('EBOP_CABLE_ACCOUNT
.SPECIFICATION',i,TNAME,TNAME);
END LOOP;
DELETE_LIST_ELEMENT
('EBOP_CABLE_ACCOUNT.SPECIFICATION',CNT+1);
CLOSE C1;
END;
然后在FORM的WHEN-NEW
-FORM-INSTANCE觸發(fā)子中加入一行:
DYN_LIST;
---- 這樣一進(jìn)入該FMX,就會動態(tài)刷新該列表。除此之外,SPECIFICATION數(shù)據(jù)項(xiàng)改為列表項(xiàng)。
---- ④ 當(dāng)顯示多條記錄且數(shù)據(jù)項(xiàng)特別多時,如何組織錄入及顯示界面:

---- 如上圖所示,PRN代碼及設(shè)備代碼在畫布1(CONTENT型)上,其它數(shù)據(jù)項(xiàng)在畫布2(STACK型)上,所有數(shù)據(jù)項(xiàng)為一個表的列或一個塊的數(shù)據(jù)項(xiàng)。在拉動水平滾動條時或用TAB或敲回車鍵時,將看到全部數(shù)據(jù)項(xiàng)。這種排布方法適用于數(shù)據(jù)項(xiàng)特別多又想顯示多條記錄時用。主要制作順序?yàn)椋合冉蓚€畫布,畫布1(CONTENT型),畫布2(STACK型),然后建立塊,選畫布時用畫布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ā)子是不能用COMMIT WORK語句的,當(dāng)你在該觸發(fā)子中使用了UPDATE,DELETE等操作并想立即存盤時,就需要COMMIT WORK語句了。首先在服務(wù)器端建立DB_SQL_COMMIT這個過程(采用ORACLE7.3數(shù)據(jù)庫),

PROCEDURE DB_SQL_COMMIT IS
source_cursor integer;
ignore integer;
V7 NUMBER :=2;
BEGIN
source_cursor:=dbms_sql.open_cursor;
dbms_sql.parse(source_cursor,'COMMIT WORK',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)自動按記錄序號加一操作

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

:VO_ID:=:System.Trigger_Record;
---- 這樣每當(dāng)生成新記錄時VO_ID就會自動加一了。
---- ⑦ 如何在一個FORM中調(diào)用另一個FORM,或在一個塊中調(diào)用另一個塊時顯示特定的記錄有時用戶會要求在調(diào)用另一個FORM時,只顯示相關(guān)的記錄,舉例如下,在一個FORM的塊中有一個按鈕,在按鈕觸發(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=''支架預(yù)制''');
OPEN_FORM('PAYMENT',ACTIVATE,SESSION,PM);
END;
---- 其中EM_NAME,EM_PROJECT_NAME為本FORM某塊的數(shù)據(jù)項(xiàng),PAYMENT為要調(diào)用的FORM模塊。這樣通過傳遞參數(shù)列表就可以得到想要的結(jié)果。在FORM PAYMENT.FMB中,建立一參數(shù)THE_WHERE,CHAR型,長1000,然后在PAYMENT.FMB中建立FORM級觸發(fā)子WHEN-NEW-FORM-INSTANCE,在該觸發(fā)子中加入以下語句:
IF :PARAMETER.THE_WHERE IS NOT NULL THEN
SET_BLOCK_PROPERTY('PAYMENT',
DEFAULT_WHERE,:PARAMETER.THE_WHERE);
END IF;
---- 其中PAYMENT為要顯示的塊,這樣通過參數(shù)傳遞就得到想要的某些特定條件的數(shù)據(jù)了。
---- ⑧ 在FORM中當(dāng)有主從塊時,連續(xù)輸入記錄如何避免被不斷的提示保存:

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

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

---- 在報(bào)表開始的Parameter Form中選擇報(bào)表按哪個數(shù)據(jù)項(xiàng)排序,

---- 1. 先在USER PARAMETER 中創(chuàng)建SORT參數(shù),為字符型,長20。

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

---- 3. 然后處理QUERY中的SQL語句:

select CHARGER,FCO_NO,EM_NAME,FCO
_NO,DESCRIPTION, FCR_POINT
from FCR_MAIN
ORDER BY DECODE(:SORT,'責(zé)任方',CHARGER,'FCO號',
FCO_NO,'FCR號',FCR_NO,'FCR號',EM_NAME)

---- ⑩ 在Developer 2000中如何讀寫操作系統(tǒng)文件
---- 在用Developer 2000的開發(fā)工具開發(fā)應(yīng)用程序時,經(jīng)常碰到需要讀寫外部文件的問題,可以用ORACLE 帶的包TEXT_IO來完成這項(xiàng)需求。例如:

DECLARE
IN_FILE TEXT_IO.FILE_TYPE;
OUT_FILE TEXT_IO.FILE_TYPE;
LINE_BUFER VARCHAR2(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);
END LOOP;
EXCEPTION
WHEN no_data_found THEN
TEXT_IO.PUT_LINE(‘CLOSING THE FILE ,PLEASE WAITING....’);
TEXT_IO.FCLOSE(IN_FILE);
TEXT_IO.FCLOSE(OUT_FILE);
END;
---- 三.數(shù)據(jù)庫管理

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

---- ② 數(shù)據(jù)庫文件的移動方法

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

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

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

#mv /ora13/orarun/document.dbf /ora12/orarun
---- 3. 裝載數(shù)據(jù)庫并用alter database命令來改變數(shù)據(jù)庫中的文件名.
SVRMGR > connect internal;
SVRMGR > startup mount RUN73;
SVRMGR > alter database rename file
> ‘/ ora13/orarun/document.dbf’
> ‘/ ora12/orarun/document.dbf’;
---- 4. 啟動實(shí)例.

SVRMGR > alter database open;
---- (huangfutong@china.com)

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

posted on 2006-12-04 15:09 Cpp Fans 閱讀(270) 評論(0)  編輯 收藏 引用 所屬分類: DataBase
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国精品一区二区三区| 老牛嫩草一区二区三区日本| 蜜桃精品久久久久久久免费影院| 在线亚洲欧美专区二区| 国产日韩欧美黄色| 欧美一级理论片| 午夜精彩视频在线观看不卡| 亚洲国产精品va在线观看黑人| 91久久黄色| 国产精品伊人日日| 欧美一区二区在线看| 欧美大片专区| 夜夜嗨网站十八久久| 国产精品入口麻豆原神| 你懂的成人av| 午夜久久tv| 一本大道久久a久久精二百| 久久精品91久久久久久再现| 亚洲欧洲视频| 久久综合久久综合久久综合| 亚洲高清视频中文字幕| 亚洲一区三区电影在线观看| 国产免费成人av| 亚洲欧美日韩精品在线| 亚洲国产一区二区三区青草影视 | 日韩亚洲一区在线播放| 红杏aⅴ成人免费视频| 18成人免费观看视频| 亚洲国产精品成人| 一个人看的www久久| 亚洲欧美在线看| 99这里只有精品| 国产精品性做久久久久久| 欧美国产亚洲精品久久久8v| 国产欧美精品一区二区色综合| 亚洲人成网站色ww在线| 在线观看视频一区二区欧美日韩| 亚洲国产成人午夜在线一区| 欧美成年人视频网站欧美| 久久亚洲精品一区| 国产欧美韩日| 中文一区字幕| 中文在线一区| 欧美激情综合网| 欧美电影免费| 在线观看亚洲视频啊啊啊啊| 亚洲免费视频成人| 一区二区三区.www| 欧美国产日韩在线观看| 欧美fxxxxxx另类| 精品粉嫩aⅴ一区二区三区四区| 亚洲欧美视频一区| 性色一区二区三区| 国产精品视频免费在线观看| 一区二区三区波多野结衣在线观看| 一区二区高清在线| 欧美日韩精选| 一本一道久久综合狠狠老精东影业| 日韩视频一区二区在线观看| 欧美国产高清| av成人毛片| 亚洲欧美日韩专区| 国产精品丝袜久久久久久app| 亚洲一区不卡| 欧美主播一区二区三区| 国产伦精品一区二区| 午夜精品影院| 欧美大片免费| 一区二区欧美在线| 国产精品久久久久国产a级| 一区二区三区高清在线| 亚洲女ⅴideoshd黑人| 国产精品一区二区三区四区五区| 亚洲免费网站| 美国成人毛片| 99国产精品国产精品久久 | 91久久国产自产拍夜夜嗨 | 另类春色校园亚洲| 在线欧美视频| 欧美美女喷水视频| 亚洲免费在线播放| 免费亚洲视频| 亚洲天堂成人| 国产日韩精品久久| 麻豆91精品91久久久的内涵| 91久久精品视频| 欧美亚州韩日在线看免费版国语版| 一区二区三区欧美在线| 欧美夜福利tv在线| 亚洲电影在线看| 欧美日韩另类字幕中文| 亚洲欧美乱综合| 久久久噜噜噜久久中文字幕色伊伊| 狠狠色丁香久久婷婷综合_中| 美女国产一区| 亚洲网站在线播放| 欧美www在线| 在线视频亚洲一区| 狠狠色综合日日| 欧美日韩中国免费专区在线看| 亚洲一区二区三区乱码aⅴ| 久久成人精品| 日韩小视频在线观看| 国产精品日韩精品| 久久一区亚洲| 亚洲欧美久久久| 亚洲人体偷拍| 久久www免费人成看片高清| 久久久久se| 日韩亚洲欧美中文三级| 欧美一区二区三区另类 | 亚洲一区二区在线免费观看视频| 国产精品欧美日韩一区| 美国三级日本三级久久99| 亚洲午夜精品网| 亚洲激情av在线| 久久野战av| 欧美一区二区大片| 亚洲人成啪啪网站| 狠狠色综合一区二区| 国产精品爱久久久久久久| 麻豆精品精华液| 欧美影院成年免费版| 日韩一级黄色大片| 亚洲国产日日夜夜| 国产精品亚洲人在线观看| 欧美成人在线免费观看| 亚洲综合色丁香婷婷六月图片| 亚洲国产精品久久久久婷婷884| 久久riav二区三区| 亚洲综合社区| 亚洲日本一区二区三区| 伊人成人开心激情综合网| 国产精品美女久久久久久久| 牛牛国产精品| 美女久久一区| 美女免费视频一区| 裸体丰满少妇做受久久99精品| 中日韩美女免费视频网址在线观看| 亚洲欧洲日本在线| 亚洲国产精品传媒在线观看| 久久婷婷国产综合精品青草| 欧美亚洲日本一区| 欧美亚洲免费电影| 亚洲欧美日韩精品一区二区| 一区二区电影免费在线观看| 一区二区精品| 亚洲专区一区二区三区| 亚洲视频在线二区| 中文亚洲免费| 亚洲免费一级电影| 亚洲一区日韩在线| 亚洲一区二区三区精品视频| 亚洲最新在线视频| 国产视频一区二区在线观看 | 亚洲精品久久久久久久久久久久 | 亚洲毛片av在线| 亚洲精品在线视频| 99re66热这里只有精品4| 亚洲精品日韩欧美| 亚洲激情婷婷| 日韩视频一区二区| 亚洲一区二区三区视频| 亚洲在线成人精品| 性欧美videos另类喷潮| 久久精品视频在线免费观看| 久久乐国产精品| 久久亚洲精品伦理| 亚洲欧洲一区| 亚洲图色在线| 欧美在线看片a免费观看| 久久国产精品电影| 男女精品视频| 亚洲欧美日韩国产精品| 欧美自拍偷拍| 欧美大片一区二区三区| 欧美日韩亚洲激情| 国产日韩欧美自拍| 亚洲电影在线看| 日韩一本二本av| 久久久久久久成人| 欧美福利一区二区三区| 日韩视频精品在线| 欧美一级午夜免费电影| 久久一区二区三区四区| 欧美日韩精品免费看| 国产日韩综合| 亚洲狼人综合| 久久精品视频va| 亚洲日本va在线观看| 午夜亚洲性色福利视频| 欧美3dxxxxhd| 国产区日韩欧美| 99精品视频一区| 久久久久久久综合| 一本久久a久久精品亚洲| 久久精品视频免费| 欧美午夜美女看片| 亚洲成人影音| 久久精品噜噜噜成人av农村|