2009年7月24日

          本人現(xiàn)手頭有20個(gè)Google Wave邀請(qǐng)剩余,大伙有誰需要的,請(qǐng)?jiān)?a target="_blank" >http://www.ijavaee.cn/others/google-wave-invitations.html留言,我會(huì)一一發(fā)送。
          posted @ 2009-12-09 20:54 ijavaee 閱讀(203) | 評(píng)論 (0)編輯 收藏
          本來自己翻譯了一篇文章,先放到了自己的博客,準(zhǔn)備BlogJava也發(fā)一份,結(jié)果,復(fù)制過來,排版完全亂了。要是能看我就忍了,結(jié)果是,唉,預(yù)格式化的內(nèi)容復(fù)制過來行間距居然放大了N倍,一行一行調(diào)整了一下,還是沒法看,郁悶中……翻譯沒花多少時(shí)間,排版整了2個(gè)多小時(shí),先是WordPress上發(fā)布時(shí)的排版,終于排好了,弄到BlogJava上來又亂得一塌糊涂~~

          譯文的地址:10個(gè)你應(yīng)該知道的Java正則表達(dá)式的例子

          本來還想發(fā)到網(wǎng)站首頁原創(chuàng)Java技術(shù)區(qū)去的,整成這個(gè)樣,發(fā)首頁也不好意思。算了,放這里,大家有興趣的過去看看吧。

          posted @ 2009-12-01 23:27 ijavaee 閱讀(276) | 評(píng)論 (0)編輯 收藏

          最近一直在修改以前同事寫的Oracle存儲(chǔ)過程,由于編碼不規(guī)范,修改起來相當(dāng)費(fèi)神,于是乎,翻譯了這篇 PL/SQL Formatting Guide (Oracle PL/ SQL by Example,Appendix A),費(fèi)了九牛二虎之力,終于翻譯完了,也終于知道自己的英語有多爛了,嗚嗚。

          我的Blog :http://www.ijavaee.cn

          聲明:原創(chuàng)翻譯,不足之處請(qǐng)多多指正,轉(zhuǎn)載請(qǐng)注明出處!

          一、大小寫

          就像在SQL中一樣,PL / SQL中是不區(qū)分大小寫的。其一般準(zhǔn)則如下:

          • 關(guān)鍵字(BEGIN, EXCEPTION, END, IF THEN ELSE,LOOP, END LOOP)、數(shù)據(jù)類型(VARCHAR2, NUMBER)、內(nèi)部函數(shù)(LEAST, SUBSTR)和用戶定義的子程序(procedures, functions,packages),使用大寫。
          • 變量名以及SQL中的列名和表名,使用小寫。

          二、空白

          空白(空行和空格)在PL/SQL中如同在SQL中一樣重要,因?yàn)樗翘岣叽a可讀性的一個(gè)重要因素。換句話說,可以通過在代碼中使用縮進(jìn)來體現(xiàn)程序的邏輯結(jié)構(gòu)。以下是一些建議:

          • 在等號(hào)或比較操作符的左右各留一個(gè)空格;
          • 結(jié)構(gòu)詞(DECLARE, BEGIN, EXCEPTION, END,IF and END IF, LOOP and END LOOP)居左排列。另外,結(jié)構(gòu)中的嵌套結(jié)構(gòu)要縮進(jìn)三個(gè)空格(使用空格鍵,而不是Tab鍵);
          • 主要代碼段之間用空行隔開;
          • 把同一結(jié)構(gòu)的不同邏輯部分分開寫在獨(dú)立的行,即使這個(gè)結(jié)構(gòu)很短。例如,IF和THEN被放在同一行,而ELSE 和END IF則放在獨(dú)立的行。

          三、命名約定

          使用以下前綴對(duì)于避免與關(guān)鍵字和表名列名相沖突是很有幫助的:

          • v_變量名
          • con_常量名
          • i_輸入?yún)?shù)名,o_輸出參數(shù)名,io_輸入輸出參數(shù)名
          • c_游標(biāo)名 或者 游標(biāo)名_cur
          • rc_ Ref Cursor
          • r_Record名 或者 Record名_rec
          • FOR r_stud IN c_stud LOOP…
          • FOR stud_rec IN stud_cur LOOP
          • type_名稱,名稱_type (用戶定義的類型)
          • t_表名,表名_tab (PL/SQL 表)
          • rec_Record名,Record名_rec (Record變量)
          • e_異常名 (用戶定義的異常)

          包的名稱應(yīng)該描述包內(nèi)的存儲(chǔ)過程和函數(shù)主要所完成的功能

          存儲(chǔ)過程的名稱應(yīng)該描述該存儲(chǔ)過程所執(zhí)行的動(dòng)作

          函數(shù)的名稱應(yīng)該描述所返回的變量

          例如:

          PACKAGE student_admin

          – admin 后綴可能是用于表示管理功能.

          PROCEDURE remove_student (i_student_id IN student.studid%TYPE);

          FUNCTION student_enroll_count (i_student_id student.studid%TYPE)

          RETURN INTEGER;

          四、注釋

          PL/SQL中的注釋如同SQL中的注釋一樣重要。他們應(yīng)該解釋程序的主要部分和所有關(guān)鍵的邏輯步驟。

          使用單行注釋(–)而不是多行注釋(/*)。即使PL/SQL對(duì)這些注釋做同樣處理,這樣在代碼完成后進(jìn)行調(diào)試也會(huì)容易些,因?yàn)槟悴荒茉诙嘈凶⑨屩星度攵嘈凶⑨尅Q句話說,單行注釋代碼中可以部分取消注釋,而在多行注釋代碼中則不行。

          五、其他的建議

          對(duì)于PL/SQL中嵌入的SQL聲明,使用相同的格式化指南來決定這些聲明應(yīng)該如何在代碼塊中出現(xiàn)

          提供一個(gè)頭部注釋,用于說明代碼塊的用途并列出創(chuàng)建日期和作者名字。并且每個(gè)修訂版都要有一行注釋,包含作者名、日期和修訂版描述。

          例如:下面的這個(gè)示例體現(xiàn)了上述建議。請(qǐng)注意該示例還使用了等寬字體(Courier New),因?yàn)槊總€(gè)字體占據(jù)同等寬度可以使格式化更加簡(jiǎn)便。等比例空格字體會(huì)隱藏空格使得行間對(duì)齊比較困難。多數(shù)文本和程序編輯器默認(rèn)使用等寬字體。


          REM ********************************************************
          REM 
          * 文件名:coursediscount01.sql
          REM 
          * 版本:1
          REM 
          * 用途:對(duì)于至少有一部分超過十個(gè)學(xué)生登記的課程給予折扣
          REM 
          * 參數(shù):無
          REM 
          *
          REM 
          * 作者:s.tashi  時(shí)間:2000.1.1
          REM 
          * 修改者:y.sonam 時(shí)間:2000.2.1
          REM 
          * 描述:修正游標(biāo),添加縮進(jìn)和注釋。
          REM 
          ********************************************************

          DECLARE

          -- C_DISCOUNT_COURSE 找出那些至少有一部分超過十個(gè)學(xué)生登記的課程
          CURSOR c_discount_course IS
             SELECT
           DISTINCT course_no FROM section sect
             WHERE 10 <= (SELECT COUNT(*) FROM enrollment enr
                           WHERE
           enr.section_id = sect.section_id);
          -- 費(fèi)用超過 $2000.00的課程的折扣率
          con_discount_2000 CONSTANT NUMBER := .90;
          -- 費(fèi)用在$1001.00和$2000.00之間的課程的折扣率
          con_discount_other CONSTANT NUMBER := .95;
          v_current_course_cost course.cost
          %TYPE;
          v_discount_all 
          NUMBER;
          e_update_is_problematic EXCEPTION;
          BEGIN
          -- 對(duì)于那些要打折的課程, 確定當(dāng)前費(fèi)用和新的費(fèi)用
             FOR r_discount_course in c_discount_course LOOP
                
          SELECT cost INTO v_current_course_cost FROM course
                
          WHERE course_no = r_discount_course.course_no;
                
          IF v_current_course_cost > 2000 THEN
                   v_discount_all :
          = con_discount_2000;
                ELSE
                   IF v_current_course_cost > 1000 THEN
                      v_discount_all :
          = con_discount_other;
                   ELSE
                      v_discount_all :
          = 1;
                   END IF;
                END IF;

               
          BEGIN
                  
          UPDATE course SET cost = cost * v_discount_all
                  
          WHERE course_no = r_discount_course.course_no;
                EXCEPTION
                  
          WHEN OTHERS THEN
                      RAISE e_update_is_problematic;
                
          END-- 更新記錄的子代碼塊結(jié)束
             END LOOP; -- 主循環(huán)結(jié)束
             COMMIT;
          EXCEPTION
             WHEN e_update_is_problematic THEN
                -- 事務(wù)回滾
                ROLLBACK;
             DBMS_OUTPUT.PUT_LINE(’There was a problem updating a course cost.’);
             WHEN OTHERS THEN
                NULL;
          END;
          /

          我的Blog :http://www.ijavaee.cn ,網(wǎng)站初建,歡迎大家來訪,交流技術(shù)

          posted @ 2009-07-24 00:22 ijavaee 閱讀(2485) | 評(píng)論 (3)編輯 收藏

          導(dǎo)航

          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          統(tǒng)計(jì)

          留言簿(1)

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 连江县| 犍为县| 兴海县| 会理县| 乌拉特中旗| 哈密市| 抚顺县| 台中市| 南乐县| 灌阳县| 苍山县| 长兴县| 嘉鱼县| 铁岭县| 长垣县| 扬中市| 宁乡县| 丰原市| 华池县| 辽宁省| 山西省| 濮阳市| 丹阳市| 祁门县| 石景山区| 鹰潭市| 黑山县| 阳高县| 黄大仙区| 东宁县| 定结县| 荔波县| 安乡县| 赣榆县| 兴业县| 漳平市| 西畴县| 泰来县| 咸宁市| 社会| 平泉县|