tzbl
          本人想要做一個網上書店系統,所有功能盡量用開源框架,希望可以得到大家的幫助和支持,我的開發經歷也會紀錄在這里的。
          posts - 4,  comments - 0,  trackbacks - 0

          // 日期格式化:

          to_date('2006-11-20 16:35:00','yyyy-mm-dd hh24:mi:ss')

          ?

          // 取子串,第二個參數表示從原串的何處起取,第三個參數指子串長度:

          substr('abcdef',1,4)

          substr('ab',1,4)= 'ab'

          ?

          // 日期截取,即截取時間,保留時間部分:

          trunc(sysdate)

          ?

          // 日期的加減:

          trunc(sysdate)-1? 前一天

          trunc(sysdate)-1/(24*60*60)? 前一秒

          to_number(trunc(sysdate)-begintime)*1440? 計算時間差,單位:分鐘

          ?

          // 四舍五入:

          round(2.555)=2

          round(2.555,2)=2.56

          ?

          //case 語句:

          case when sysdate>MyTable.cleartime

          then ……

          else

          ……

          end

          ?

          case MyTable.objid when 'hmy'

          then ……

          else

          ……

          end

          ?

          //decode 函數,類似于三元運算符:

          decode(MyTable.price,null,0, MyTable.price)? 如果 price null ,返回 0

          具體的語法格式如下:

          DECODE(input_value,value,result[,value,result…][,default_result]);

          ?

          // 常見的比率計算示例:

          Select to_char(round(sum(decode(isactive,0,1,0))/count(isactive)*100,2))||'%' from ……

          ?

          // 在字符串類型數據判等時,如果是 char nchar ,注意多余的空格

          ?

          // 判斷交集:

          如何判斷兩個時間段有交集, starttime_1= = =endtime_1 starttime_2= = =endtime_2

          where least(endtime_1, endtime_2) >greatest(starttime_1, starttime_2)

          ?

          // 打印輸出

          dbms_output.put_line(' …… ');

          ?

          // 存儲過程:

          (1) 從最簡單的存儲過程例子開始:

          create or replace procedure MyProc

          as

          begin

          ? delete from MyTable;

          end;

          // oracle 中可以使用 replace ,方便多了。 as 亦可用 is

          ?

          (2) 帶上參數:

          create or replace procedure MyProc(p_date in date)

          as

          begin

          ? delete from MyTable where starttime= p_date;

          end;

          //in 可省去,如有輸出參數,應用 out.

          ?

          (3) 聲明變量:

          create or replace procedure MyProc

          as

          v_count number:=0;

          begin

          select count(*) into v_count from MyTable;

          if v_count>0 then

          …… ;

          end if;

          end;

          // 變量聲明不用 declare 。變量可以指定默認值。

          ( PL/SQL 程序”又稱“ PL/SQL 塊”,“ PL/SQL 塊”分為過程,函數,觸發器等,“ PL/SQL 塊”又分為“帶名塊”和“匿名塊”。“帶名塊”就是有名字的程序,如上面存儲過程“ MyProc ”,“匿名塊”就是沒有名字的程序,“帶名塊”里面以 is/as 開始定義變量,“匿名塊”里面以 declare 開始來定義變量 )

          ?

          (4) 聲明游標:

          create or replace procedure MyProc

          as

          cursor cursor_1 is

          select objid,starttime from MyTable;

          c1_row cursor_1%ROWTYPE;

          c1_objid MyTable.objid%TYPE;

          c1_starttime MyTable.starttime%TYPE;

          ?

          begin

          ? open cursor_1;

          fetch cursor_1 into c1_objid,c1_starttime;

          loop

          fetch cursor_1 into c1_row;

          exit when cursor_ 1%notfound;

          ? if c1_row.starttime< c1_starttime then

          ??? ……

          ? end if;

          end loop;

          close cursor_1

          end;

          // 使用 %TYPE 可以省去查看列的數據類型的麻煩

          // 可以使用 %ROWTYPE 來在游標中表示一行記錄。

          // 游標中常用的屬性: %notfound %found

          ?

          (5) 動態游標:

          create or replace procedure MyProc

          as

          v_id varchar2(20);

          ?

          type v_cursor is ref cursor;

          cursor_1 v_cursor;

          c1_objid MyTable.objid%TYPE;

          c1_starttime MyTable.starttime%TYPE;

          ?

          begin

          ? v_id:= …… ;

          ? open cursor_1 for 'select objid,starttime from MyTable where objid=''' || v_id || '''';

          ……

          close cursor_1;

          end;

          // 游標的語句可以動態指定

          ?

          // 調試存儲過程

          不同數據庫中對存儲過程的調試都是個令人頭痛的問題, oracle 中如欲調試存儲過程,最好有輔助軟件,如 pl/sql developer 。在 pl/sql developer 可按以下步驟對存儲過程進行調試:

          一、定位你的 procedure

          1 在屏幕左邊的對象瀏覽器中展開 procedure

          2 找到你的 procedure

          二、打開測試窗口

          1 在你的 procedure 上點擊右鍵

          2 在彈出的菜單中選擇 test

          3PL/SQL Devoloper 就會打開一個測試窗口并自動生成一個調用塊

          4 在測試窗口的下方輸入你的 procedure 的入口參數

          三、打開編輯窗口

          1 在你的 procedure 上點擊右鍵

          2 在彈出的菜單中選擇 edit

          3PL/SQL Devoloper 就會打開編輯窗口

          4 在需要的地方設置斷點

          四、開始調試

          1 回到調試窗口

          2 打開 debug 菜單,你就會看見 start 項已經可以用了,點擊它

          3 接下來就可以用調試窗口上的按鈕進行單步跟蹤

          ?

          如果在調試過程中提示“ no debug information ”,則右鍵相應的存儲過程,選中“ add debug information ”。

          ?

          // 設置定時任務

          variable n number;

          begin

          dbms_job.submit(:n,'MyProc;',sysdate,'sysdate+1/1440');

          commit;

          end;

          // 定時執行 MyProc 存儲過程,第隔一分鐘執行一次。變量 n 用于返回該任務在系統中的編號 ( 唯一標識 ) ,你可以用語句將它打印出來。

          // 如果存儲過程有參數,則第二個參數改作類似: 'MyProc(10);' 即可。

          ( 使用 Submit() 過程,工作被正常地計劃好。
          這個過程有五個參數: job what next_date interval no_parse

          PROCEDURE Submit ( job OUT binary_ineger,
          What IN varchar2,
          next_date IN date,
          interval IN varchar2,
          no_parse IN booean:=FALSE)

          job
          參數是由 Submit() 過程返回的 binary_ineger 。這個值用來唯一標識一個工作。
          what
          參數是將被執行的 PL/SQL 代碼塊。
          next_date
          參數指識何時將運行這個工作。
          interval
          參數何時這個工作將被重執行。
          no_parse
          參數指示此工作在提交時或執行時是否應進行語法分析 ——TRUE
          指示此 PL/SQL 代碼在它第一次執行時應進行語法分析,
          FALSE 指示本 PL/SQL 代碼應立即進行語法分析 )

          ?

          begin

          dbms_job.remove(21);

          end;

          // 移除指定編號的任務

          ?

          begin

          dbms_job.run(21);

          end;

          // 手動執行一次指定編號的任務

          ?

          select job,next_date,next_sec,failures,broken from user_jobs;

          // 獲取系統中所有的任務信息


          http://www.cnblogs.com/KissKnife/services/trackbacks/602140.aspx


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 龙陵县| 兴安县| 宁城县| 晋城| 泸西县| 巴林左旗| 巍山| 沙河市| 颍上县| 台南市| 新宁县| 邻水| 新丰县| 长岭县| 宁强县| 赣榆县| 七台河市| 万载县| 新巴尔虎左旗| 大港区| 大姚县| 黑水县| 井冈山市| 大田县| 台中县| 德保县| 宜昌市| 榆社县| 绥阳县| 定兴县| 彭州市| 抚顺县| 泸西县| 黑山县| 资兴市| 彰化县| 青田县| 隆林| 涟水县| 泰宁县| 烟台市|