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

          // 日期格式化:

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

          ?

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

          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 函數(shù),類似于三元運算符:

          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 ……

          ?

          // 在字符串類型數(shù)據(jù)判等時,如果是 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) 帶上參數(shù):

          create or replace procedure MyProc(p_date in date)

          as

          begin

          ? delete from MyTable where starttime= p_date;

          end;

          //in 可省去,如有輸出參數(shù),應用 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 塊”分為過程,函數(shù),觸發(fā)器等,“ 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 可以省去查看列的數(shù)據(jù)類型的麻煩

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

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

          ?

          (5) 動態(tài)游標:

          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;

          // 游標的語句可以動態(tài)指定

          ?

          // 調(diào)試存儲過程

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

          一、定位你的 procedure

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

          2 找到你的 procedure

          二、打開測試窗口

          1 在你的 procedure 上點擊右鍵

          2 在彈出的菜單中選擇 test

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

          4 在測試窗口的下方輸入你的 procedure 的入口參數(shù)

          三、打開編輯窗口

          1 在你的 procedure 上點擊右鍵

          2 在彈出的菜單中選擇 edit

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

          4 在需要的地方設置斷點

          四、開始調(diào)試

          1 回到調(diào)試窗口

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

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

          ?

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

          ?

          // 設置定時任務

          variable n number;

          begin

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

          commit;

          end;

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

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

          ( 使用 Submit() 過程,工作被正常地計劃好。
          這個過程有五個參數(shù): 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
          參數(shù)是由 Submit() 過程返回的 binary_ineger 。這個值用來唯一標識一個工作。
          what
          參數(shù)是將被執(zhí)行的 PL/SQL 代碼塊。
          next_date
          參數(shù)指識何時將運行這個工作。
          interval
          參數(shù)何時這個工作將被重執(zhí)行。
          no_parse
          參數(shù)指示此工作在提交時或執(zhí)行時是否應進行語法分析 ——TRUE
          指示此 PL/SQL 代碼在它第一次執(zhí)行時應進行語法分析,
          FALSE 指示本 PL/SQL 代碼應立即進行語法分析 )

          ?

          begin

          dbms_job.remove(21);

          end;

          // 移除指定編號的任務

          ?

          begin

          dbms_job.run(21);

          end;

          // 手動執(zhí)行一次指定編號的任務

          ?

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

          // 獲取系統(tǒng)中所有的任務信息


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


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


          網(wǎng)站導航:
           

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

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宜阳县| 松溪县| 天柱县| 六盘水市| 内丘县| 商城县| 三河市| 公安县| 库尔勒市| 广饶县| 峨眉山市| 黄山市| 大方县| 怀安县| 临江市| 崇仁县| 广昌县| 济源市| 南城县| 广丰县| 德兴市| 阳城县| 大城县| 碌曲县| 乌兰县| 金川县| 安陆市| 全南县| 麻阳| 石棉县| 孝昌县| 时尚| 黄梅县| 延边| 信丰县| 山阳县| 鲜城| 日照市| 宣汉县| 柳林县| 林甸县|