ORACLE應用經驗(1)(轉)
ORACLE應用經驗(1)(轉)[@more@]本文出自: 作者: (2001-08-13 07:00:00)JAN-1(January) FEB-2(February) MAR-3(March)APR-4(April) MAY-5(May) JUN-6(June)JUL-7(July) AUG-8(August) SEP-9(September)OCT-10(October) NOV-11(November) DEC-12(December)************************************************************************************************常用設定********************************---on-log 觸發器編寫示範Declareflag varchar2(80):=null;cou number:=1;n number;BeginLooplogon(USERNAME,PASSWORD||'@'||CONNECT,PROPERTY_FALSE....);flag:=Get_Application_Property(DATASOURCE);Exit when cou>8 or flag='ORACLE';cou:=cou+1;End Loop;If flag<>'ORACLE' thenset_alert_property('a_1',alert_message_text,'登入失敗,請返回重試');n:=show_alert('a_1');raise form_trigger_failure; --中斷 FORMEnd if;End;---對基表執行查詢(只對基表)Set_Block_Property('Block_Name',Default_Where,'where ......');Go_Block('Block_Name');Execute_Query;***************************************************變數:區域性變數;全域性變數--------------1.:block.item2.:parameter.v_name3.:global.V_name***************************************************---同步發生顯示synchronize;---實施'TRIGGER'觸發EXECUTE_TRIGGER(TRIGGER_NAME);---清除模組clear_block(NO_VALIDATE); 'NO_VALIDATE'不生效--建立警告欄並由警告欄選擇Declaren number;BeginSet_Alert_Property('Alert_Name',Alert_Message_Text,'message');n:=Show_Alert('Alert_Name');If n=Alert_Button1 then...;ElsIf n=Alert_Button2 then...;End if;End;---WINDOW設定--執行時最大化,最小化Set_Window_Property(FORMS_MDI_WINDOW, WINDOW_STATE, MAXIMIZE|MINIMIZE);--WINDOW標題Set_Window_Property(FORMS_MDI_WINDOW, title,'TEXT');--退出是否為真Set_Window_Property(FORMS_MDI_WINDOW, REMOVE_ON_EXIT,PROPERTY_FALSE|TRUE);---設定系統提示資訊等級:System.Message_Level:= '5|10|15|20';---設定ITEM屬性--設定ITEM屬性ENABLEDSet_Item_Property('Block_name.Item_name',ENABLED,PROPERTY_TRUE|FALSE);--設定ITEM屬性NAVIGABLESet_Item_Property('Block_name.Item_name',NAVIGABLE,PROPERTY_TRUE|FALSE);--設定ITEM屬性VISUAL_ATTRIBUTESet_Item_Property('Block_name.Item_name',visual_attribute,'vname');--'vname'由導航器中(VISUAL_ATTRIBUTES)定義--設定ITEM屬性DISPLAYEDSet_Item_Property('Block_name.Item_name',displayed,TRUE|FALSE);--設定ITEM屬性POSITIONSet_Item_Property('Block_name.Item_name',position,x,y);--設定ITEM_SIZESet_Item_Property('Block_name.Item_name',item_size,x,y);--設定ITEM屬性LABLESet_Item_Property('Block_name.Item_name',LABEL,'MESSAGE')---設定LIST ITEM示範Declaren number;Beginclear_list('b1.fkfs');m:=populate_group('fkfs');populate_list('b1.fkfs','fkfs');/*其中FKFS 為 record group ;*/End;---增加'LIST ITEM'Add_List_Element(list_name, list_index, list_label, list_value);Add_List_Element(list_id, list_index, list_label, list_value);---刪除'LIST ITEM'項Delete_List_Element(list_name, list_index);Delete_List_Element(list_id, list_index);例:BEGINDelete_List_Element('years',1);Add_List_Element('years', 1, '1994', '1994');END;---獲得'LIST ITEM'項的組成1.獲得'LIST ITEM'的總和GET_LIST_ELEMENT_COUNT(list_id);GET_LIST_ELEMENT_COUNT(list_name);2.獲得'LIST ITEM'的標籤GET_LIST_ELEMENT_LABEL(list_id, list_name, list_index);GET_LIST_ELEMENT_LABEL(list_name, list_index);3.獲得'LIST ITEM'的值GET_LIST_ELEMENT_VALUE(list_id, list_index);GET_LIST_ELEMENT_VALUE(list_name, list_index);---設定'時間'DECLAREtimer_id Timer;one_minute NUMBER(5) := 60000;BEGINtimer_id := CREATE_TIMER('emp_timer', one_minute, REPEAT|NO_REPEAT);END;---產生一個'EDITER'框DECLAREed_id Editor;status BOOLEAN;BEGINed_id:=Find_Editor('edit_name'); ---由'edit_name'導航器定義IF NOT Id_Null(ed_id) THENShow_Editor(ed_id, NULL, :block_name.item_name, status);ELSEMessage('Editor "Happy_Edit_Window" not found');RAISE Form_Trigger_Failure;END IF;END;----產生一個'LOV'框DECLARElv_id LOV;status BOOLEAN;BEGINlv_id := Find_LOV('lov_name'); ---'lov_name' 由導航器定義-- IF Id_Null(lv_id) THEN-- lv_id := Find_LOV('lov_name1'); ---'lov_name1' 由導航器定義-- END IF;status := Show_LOV(lv_id,10,20);END;---定義一個'EXCEPTION'例外Declareerr_1 exception;BeginIf ... thenRaise err-1;End if;ExceptionWhen err_1 then....END;---設定應用特性(游標型別)SET_APPLICATION_PROPERTY(CURSOR_STYLE,'CROSSHAIR'|'BUSY'|'HELP'|'DEFAULT'|'INSERTION');*********************************************************************************************************函式*********************************---把字串的字元變成全大寫(UPPER)全小寫(LOWER)第一個字母大寫(INITCAP)UPPER|LOWER|INITCAP(STRING)---在檔案的左('LPAD')右('RPAD')貼上字元LPAD|RPAD(STRING,LENGTH,'SET') "LENGTH"為總字元長"SET"為貼上字元---在檔案的左('LTRIM')右('RTRIM')刪除字元LTRIM|RTRIM(SRTING,'SET') "SET"為待刪除字元---找出'字符集'在字串中的位置INSTR('STRING','SET',N,M) 從'STRING'中找出'SET'從'N'位起第'M'個---數的絕對值ABS(VALUE)---'MOD'模MOD(VALUE,除數) 返回'除數'除'VALUE'的餘數常用判斷'VALUE'是否為整數---把'VALUE'從'N'位四捨五入'ROUND' 或從'N'位截斷'TRUNC'ROUND|TRUNC(VALUE,N)---返回'VALUE'的符號SIGN(VALUE)---列表的最大值GREATEST(N1,N1...);列表的最小值LEAST(N1,N1...);---返回小於或等於數的最大整數FLOOR(VALUE) floor(1.3)=1 floor(-1.3)=-2---返回大於或等於數的最小整數CEIL(VALUE) cell (1.3)=2 cell (-1.3)=-1---取字串長度substr(string,start,number) number為string長度,start為string起點---DECODE函式,多重(if,then,else)decode(value,if1,then1,if2,then2,.....,else)---判斷'VALUE'是否為空(空值替換)NVL(UALUE,'WKFHZ') 'WKFHZ'是為空返回值,不為空則為原值---欄位長度length(:block_name.item_id)---返回字串的第一(最左)個字元的ascII值ascII(string)---多行'VALUE'的 (作用於多'行')AVG(VALUE)平均值COUNT(VALUE)行數MAX(VALUE)最大值MIN(VALUE)最小值SUM(VALUE)和---字元轉換TRANSLATE(STRING,'待轉字元','轉換字元');如 TEANSLATE('AAABBB','AB','BA') 返回'BBBAAA'---比較單行中多個列的值獲得最大('GREATEST'最小('LEAST')GREATEST|LEAST(列名,列名,...)---按表示式或位置排序ORDER BY '表示式'OR'位置' ASC|DESC ASC'升',DESC'降' 預設'ASC'**********************************************************************************************************************************************---遊標的屬性(1) %ISOPEN 開啟屬性 布林型 開啟為TRUE判斷'游標'是否開啟如未開啟則開啟'游標'IF NOT(CORSOR_NAME%ISOPEN) THENOPEN CORSOR_NAME;END IF;FETCH CORSOR_NAME INTO ...(2) %NOTFOUND 布林型 最近一次'FETCH'返回無結果 則為TRUEOPEN CORSOR_NAME;LOOPFETCH CORSOR_NAME INTO ...EXIT WHEN CORSOR_NAEM%NOTFOUND;END LOOP;(3) %FOUND 布林型 最近一次'FETCH'返回無結果 則為FALSEOPEN CORSOR_NAME;WHILE CORSOR_NAME%FOUND LOOP......FETCH CORSOR_NAME INTO ...END LOOP;CLOSE CORSOR_NAME;(4) %ROWCOUNT NUMVER型 為遊標取出的行數OPEN CORSOR_NAME;LOOPFETCH CORSOR_NAME INTO ...EXIT WHEN CORSOR_NAME%ROWCOUNT>5;......END LOOP;CLOSE CORSOR_NAME;---迴圈語句(1)基本迴圈LOOP.....EXIT WHILE; 如(EXIT WHEN X>100)END LOOP;(2)WHILE迴圈WHILE 如( WHEN X>100) LOOP.....END LOOP;(3)數值型FOR迴圈 'X'為計數器FOR X IN (第減值) Y..Z LOOP.....END LOOP;(4)遊標FOR迴圈---Exception(例外)在最近的'BEGIN'和'END'之間Exception語法1 當'沒有資料找到'時when no_data_found then語法2 當'發生任何錯誤'時when others then語法3 當'發現多行'時WHEN TOO_MANY_ROWS THEN語法4 當'字元向數字轉換失敗'時WHEN INVALID_NUMBER THEN語法5 當'被零除'時WHEN ZERO_DIVIDE THEN語法6 當'向唯一索引中插入重複資料'時WHEN DUP_VAL_ON_INDEX THEN語法7 當'非法遊標操作'時WHEN INVALID_CURSOR THEN語法8 當'數字的,資料轉換,截字串或強制性的錯誤'時WHEN VALUE_ERROR THEN****************************************************************************************************************************************************--常用TEXT_IODelcareout_file text_io.file_type;Beginout_file:=text_io.fopen('prn','w');text_io.new_line(out_file,' ');text_io.put_line(out_file,' ')text_io.fclose(out_file);End;---文字輸入輸出TEXT_IOTEXT_IO PACKAGETEXT_IO FCLOSETEXT_IO.FILE_TYPETEXT_IO.FOPENTEXT_IO.IS_OPENTEXT_IO.GET_LINETEXT_IO.NEW_LINETEXT_IO.PUTTEXT_IO.PUTFTEXT_IO.PUT_LINEUSING TEXT_IO CONSTRUCTS----------------------------DeclareOut_file Text_io.file_type;L Varchar2(100);L1 Varchar2(100);L2 Varchar2(100);BeginOut_file :=text_io.fopen('c:lllogin.txt','r');If text_io.is_open(Out_file) thentext_io.get_line(Out_file,L);text_io.get_line(Out_file,L1);text_io.get_line(Out_file,L2);ElseNull;End if;End;---清除全域性變數erase('global.var_name');---隱藏'WINDOW','VIEW','MENU'HIDE_WINDOW|VIEW|MENU(WINDOW|VIEW|MENU_name);--- 增加引數add_parameterDeclarepl_id ParamList;BEGINpl_id:=Get_Parameter_List('tempdata');IF NOT Id_Null(pl_id) THENDestroy_Parameter_List(pl_id);END IF;pl_id:=Create_Parameter_List('tempdata');Add_Parameter(pl_id,'EMP_QUERY',DATA_PARAMETER,'EMP_RECS');Run_Product(REPORTS,'empreport',SYNCHRONOUS,RUNTIME,FILESYSTEM,pl_id,NULL);END;---DECLARElArgs OLE2.LIST_TYPE;BEGINword.hApp:=OLE2.CREATE_OBJ('Word.Basic');lArgs:=OLE2.CREATE_ARGLIST;OLE2.ADD_ARG(lArgs,:ole.word_doc);OLE2.INVOKE(Word.hApp,'fileopen',lArgs);OLE2.DESTROY_ARGLIST(lArgs);END;***********************刪除重複記錄**************Delete from emp ewhere e.rowid >(select min(f.rowid) from emp f4 where f.empno=e.empno);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-942670/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GitHub CSP應用的經驗分享Github
- Oracle實驗(02):轉換 & 轉譯Oracle
- 如何改善應用啟動效能 | Facebook 應用的經驗分享
- 後端應用分層經驗總結後端
- Hulu大資料架構與應用經驗大資料架構
- Serverless 應用開發的 7 個經驗心得Server
- 充電樁定期檢測應用經驗有哪些?
- Java 應用壓測效能問題定位經驗分享Java
- Native轉型Flutter經驗分享Flutter
- Oracle insert大量資料經驗之談Oracle
- Docker(1):初體驗之應用掛載到容器Docker
- 安卓應用效能除錯和優化經驗分享安卓除錯優化
- docker使用經驗總結(三、Docker compose基礎應用)Docker
- 實用的管理經驗
- 實驗3 轉移指令跳轉原理及其簡單應用程式設計程式設計
- PICO & Unity VR實戰 經驗(1)UnityVR
- 轉載-知乎工作後的經驗
- 應用題1
- 阿里巴巴的 Kubernetes 應用管理實踐經驗與教訓阿里
- 微信群控系統的應用和實戰經驗分享
- Android開發者峰會:Android應用效能優化經驗分享Android優化
- 線上高併發應用重構(寫)填坑經驗分享(一)
- 線上高併發應用重構(寫)填坑經驗分享(二)
- 經驗總結1—資料核對
- JY901 ROS1使用經驗ROS
- 十、特殊應用:人臉識別和神經風格轉換
- Unite :將網站轉換為應用程式 支援M1網站
- oracle資料庫開發的一些經驗Oracle資料庫
- 剛轉行1年測試新手:學習Python程式設計經驗實戰分享Python程式設計
- 快應用初體驗
- 眾多行業客戶採用Oracle管理雲提升使用者體驗和交付應用程式行業Oracle
- golang RPC 應用(1) :net/rpc的應用GolangRPC
- Netflix採用GraphQL的經驗分享
- java的應用1Java
- Spark 雜記1-專案使用經驗Spark
- 破解Oracle應用整合難題RWOracle
- 1-4序列的應用1
- 淺談AB實驗及其在轉轉B2B報價系統中的應用
- 錯誤率從10%降至0.01%,領英全面分享LLM應用落地經驗