自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle PL/SQL編程規(guī)范指南

數(shù)據(jù)庫 Oracle
本文是PL/SQL Formatting Guide (Oracle PL/ SQL by Example,Appendix A的譯文,清單列出了PL/SQL的編程規(guī)范。

一、PL/SQL編程規(guī)范之大小寫

就像在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編程規(guī)范之空白

空白(空行和空格)在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ú)立的行。

三、PL/SQL編程規(guī)范之命名約定

使用以下前綴對(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編程規(guī)范之注釋

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

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

五、其他的建議

對(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)使用等寬字體。

  1. REM ********************************************************  
  2. REM * 文件名:coursediscount01.sql  
  3. REM * 版本:1  
  4. REM * 用途:對(duì)于至少有一部分超過十個(gè)學(xué)生登記的課程給予折扣  
  5. REM * 參數(shù):無  
  6. REM *  
  7. REM * 作者:s.tashi  時(shí)間:2000.1.1  
  8. REM * 修改者:y.sonam 時(shí)間:2000.2.1  
  9. REM * 描述:修正游標(biāo),添加縮進(jìn)和注釋。  
  10. REM ********************************************************  
  11. DECLARE 
  12. -- C_DISCOUNT_COURSE 找出那些至少有一部分超過十個(gè)學(xué)生登記的課程  
  13. CURSOR c_discount_course IS 
  14. SELECT DISTINCT course_no  
  15. FROM section sect  
  16. WHERE 10 <= (SELECT COUNT(*)  
  17. FROM enrollment enr  
  18. WHERE enr.section_id = sect.section_id  
  19. );  
  20. -- 費(fèi)用超過 $2000.00的課程的折扣率  
  21. con_discount_2000 CONSTANT NUMBER := .90;  
  22. -- 費(fèi)用在$1001.00和$2000.00之間的課程的折扣率  
  23. con_discount_other CONSTANT NUMBER := .95;  
  24. v_current_course_cost course.cost%TYPE;  
  25. v_discount_all NUMBER;  
  26. e_update_is_problematic EXCEPTION;  
  27. BEGIN 
  28. -- 對(duì)于那些要打折的課程, 確定當(dāng)前費(fèi)用和新的費(fèi)用  
  29. FOR r_discount_course in c_discount_course LOOP  
  30. SELECT cost  
  31. INTO v_current_course_cost  
  32. FROM course  
  33. WHERE course_no = r_discount_course.course_no;  
  34. IF v_current_course_cost > 2000 THEN 
  35. v_discount_all := con_discount_2000;  
  36. ELSE 
  37. IF v_current_course_cost > 1000 THEN 
  38. v_discount_all := con_discount_other;  
  39. ELSE 
  40. v_discount_all := 1;  
  41. END IF;  
  42. END IF;  
  43. BEGIN 
  44. UPDATE course  
  45. SET cost = cost * v_discount_all  
  46. WHERE course_no = r_discount_course.course_no;  
  47. EXCEPTION  
  48. WHEN OTHERS THEN 
  49. RAISE e_update_is_problematic;  
  50. END-- 更新記錄的子代碼塊結(jié)束  
  51. END LOOP; -- 主循環(huán)結(jié)束  
  52. COMMIT;  
  53. EXCEPTION  
  54. WHEN e_update_is_problematic THEN 
  55. -- 事務(wù)回滾  
  56. ROLLBACK;  
  57. DBMS_OUTPUT.PUT_LINE  
  58. (’There was a problem updating a course cost.’);  
  59. WHEN OTHERS THEN 
  60. NULL;  
  61. END;  
  62. /  

【編輯推薦】

  1. Oracle數(shù)據(jù)庫表連接方式及常見用法
  2. Oracle恢復(fù)管理器應(yīng)用淺析
  3. 使用Oracle外部表的五個(gè)限制
  4. MySQL左連接、右連接和內(nèi)連接詳解
  5. 數(shù)據(jù)庫連接性能深度探索
責(zé)任編輯:yangsai 來源: BlogJava
相關(guān)推薦

2010-04-13 14:35:17

2015-09-01 10:42:15

編程規(guī)范完全指南

2011-07-05 16:27:14

過程函數(shù)PL

2010-04-12 08:59:00

2010-04-08 16:55:12

Oracle proc

2009-03-26 10:46:58

OraclePL、SQL存儲(chǔ)過程

2010-04-27 15:22:34

Oracle proc

2010-05-05 11:17:55

Oracle數(shù)據(jù)庫

2010-10-25 15:56:02

Oracle PLSQL過程調(diào)試

2010-04-22 16:58:21

Oracle PLSQL

2009-03-09 16:39:19

PL SQLOracle過程調(diào)試

2009-12-29 08:58:32

Oracle SQL PL SQL單元測(cè)試

2017-05-14 16:34:07

語言PLSQL

2011-04-14 13:01:53

Oracle數(shù)據(jù)庫

2011-08-29 13:24:50

Oracle數(shù)據(jù)庫PLSQL設(shè)置快捷鍵

2010-04-21 16:58:04

Oracle PL

2010-05-07 10:06:10

Oracle PL D

2023-11-22 08:00:56

Go命名規(guī)范

2017-08-28 16:32:16

iOS編程規(guī)范代碼注釋

2011-07-29 13:40:34

Oracle數(shù)據(jù)庫PLSQL異常處理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)