Oracle數(shù)據(jù)庫命名編碼規(guī)范_第1頁
Oracle數(shù)據(jù)庫命名編碼規(guī)范_第2頁
Oracle數(shù)據(jù)庫命名編碼規(guī)范_第3頁
Oracle數(shù)據(jù)庫命名編碼規(guī)范_第4頁
Oracle數(shù)據(jù)庫命名編碼規(guī)范_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

文件標(biāo)識:QD-30-08 密級:內(nèi)部 版本號:Ver1.0 大慶金橋軟件開發(fā)作業(yè)體系大慶金橋軟件開發(fā)作業(yè)體系 OracleOracle 數(shù)據(jù)庫命名編碼規(guī)范數(shù)據(jù)庫命名編碼規(guī)范 oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 1 - 變更歷史變更歷史 操作操作責(zé)任人責(zé)任人日期日期版本版本變更內(nèi)容變更內(nèi)容 創(chuàng)建李富華 2010-04-20 無創(chuàng)建文檔 編輯周強(qiáng) 2010-04-21 無修改文檔 oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 2 - 目錄目錄 1.文檔介紹文檔介紹.4 1.1文檔目的.4 1.2文檔范圍.4 1.3定義.4 1.4參考資料.4 2.命名規(guī)范命名規(guī)范.4 2.1一般規(guī)則.4 2.2對象命名匯總表.5 3.編碼規(guī)范編碼規(guī)范.6 3.1一般性規(guī)定.6 3.2CREATE 語句.7 3.3SELECT 語句 .7 3.4INSERT 語句.8 3.5UPDATE 語句 .8 3.6DELETE 語句.9 3.7游標(biāo)語句.9 3.8IF 語句.9 3.9簡單循環(huán)語句.11 3.10FOR 循環(huán)語句.11 3.11WHILE 循環(huán)語句.11 3.12程序塊規(guī)范.12 3.13語法規(guī)范.12 4.設(shè)計規(guī)范設(shè)計規(guī)范.14 4.1一般表設(shè)計.14 4.2特殊表設(shè)計原則.15 4.3索引設(shè)計原則.15 4.4完整性設(shè)計原則.15 4.5觸發(fā)器.15 4.6視圖設(shè)計.15 4.7性能優(yōu)化.16 5.書寫規(guī)范書寫規(guī)范.20 5.1縮進(jìn)風(fēng)格.20 5.2空格及換行.20 6.注釋說明注釋說明.21 6.1一般性注釋.21 oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 3 - 6.2函數(shù)文本注釋.21 7.異常規(guī)范異常規(guī)范.22 7.1PL/SQL異常規(guī)范.22 7.2后臺驗證異常信息規(guī)范.23 8.附錄附錄.23 8.1附一 開發(fā)工具 .23 8.2附二 預(yù)定義異常 .24 8.3附三 范式 .25 8.3.1 第一范式 .25 8.3.2 第二范式 .25 8.3.3 第三范式 .25 8.3.4 Boyce-Codd 范式.26 8.3.5 第四范式 .26 8.3.6 第五范式 .26 8.3.7 反規(guī)范化 .26 oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 4 - 1.文檔介紹文檔介紹 1.1 文文檔檔目目的的 本文檔用于指導(dǎo)開發(fā)設(shè)計人員對 Oracle 數(shù)據(jù)庫進(jìn)行設(shè)計和編碼。使用統(tǒng)一的命名 和編碼規(guī)范,使數(shù)據(jù)庫對象命名及編碼風(fēng)格標(biāo)準(zhǔn)化,可增加程序的可讀性,增強(qiáng)系統(tǒng) 的可維護(hù)性,提高軟件的質(zhì)量。 本文檔僅僅針對 Oracle 數(shù)據(jù)庫做的規(guī)范,對其他數(shù)據(jù)庫不具有指導(dǎo)意義。 1.2 文文檔檔范范圍圍 本規(guī)范適用于公司范圍內(nèi)所有以 Oracle 作為后臺數(shù)據(jù)庫的應(yīng)用系統(tǒng)和項目開發(fā)工 作。對公司 2010 年以前用 Oracle 數(shù)據(jù)庫開發(fā)的項目不做限制。 1.3 定定義義 無 1.4 參參考考資資料料 2.命名規(guī)范命名規(guī)范 2.1 一一般般規(guī)規(guī)則則 Oracle 中的各種數(shù)據(jù)對象,包括實例、數(shù)據(jù)庫、表空間、表、視圖、存儲過程、函 數(shù)、解發(fā)器等的命名都要遵循 Oracle 的標(biāo)準(zhǔn)命名規(guī)則: 1) 以字符打頭,30 個字符以內(nèi),名稱超過長度的情況下適當(dāng)采用縮寫。 2) 只能包含 A-Z,a-z,0-9,_。 3) 不能和同一個表空間下的其他對象重名。 4) 不能是 Oracle 服務(wù)器的保留字。 5) 數(shù)據(jù)對象盡量不要使用縮寫;如要縮寫最好使用容易看懂的縮寫。 2.2 對對象象命命名名匯匯總總表表 對象對象 對象名對象名前綴前綴范例范例描述描述 表(table) t_ t_user 表名長度原則上不超過25 個字符;表、視圖、字段 oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 5 - 名中不出現(xiàn)復(fù)數(shù),創(chuàng)建表 必須要注釋,comments 必須要填寫。 視圖(view) v_v_user 如果表名或字段名過長, 則用表名或字段名的縮寫。 序列(sequence) s_s_user 一般索引(normal index) i_i_user_userna me field:字段名,遇上 長字段名可采用縮寫 唯一索引(unique index) i_u_i_u_user_birt hday 主鍵(primary key) pk_ pk_user_useri d 外鍵(foreign key) fk_ fk_student_us er_userid 簇(cluster) cl_ cl_user_stude nt 觸發(fā)器(triger) tr_i _ tr_u _ tr_d _ tr_iud_ tr_i_ add_user_birt hday i:insert u:update d:delete 存儲過程 (procedure) p_i_ p_u_ p_d_ p_s_ p_i_user_birt hday 函數(shù) (function) f_ f_get_usernam e_by_userid 包及包體(package SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9, col10 FROM sb_sbqkxx,sb_bb011101 WHERE sb_sbqkxx.czwdbh = sb_bb.czwdbh AND sb_sbqkxx.swdjbh = avc_swdjbh oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 8 - AND sb_sbqkxx.sbsssq = avc_sbsssq; 3.4INSERT 語語句句 關(guān)鍵字用大寫,列名和表名采用小寫;【推薦】 語句中嵌入逗號時,在逗號后面加一空格,當(dāng)逗號是最后一個字符時,把它放在本 行; 當(dāng)語句的同一部分要延續(xù)到下一行時,按下列格式排列: 當(dāng)語句中出現(xiàn)括號時,括號的兩邊不留空格。 格式如下:【推薦】 INSERT INTO (, , . , ,) VALUES (, , .,) 例如: insert into sm_user (user_id, user_name, login_name) values ( p_user_id, p_user_name, p_login_name) insert into sm_duty_bak (duty_id, duty_name, created_by, creation_date, last_updated_by, last_update_date, disable_date ) select duty_id, duty_name, created_by, creation_date, last_updated_by, last_update_date, disable_date from sm_duty where duty_id =: duty_id 3.5UPDATE 語語句句 關(guān)鍵字右對齊; 格式如下:【推薦】 UPDATE SET = , = , oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 9 - = 3.6DELETE 語語句句 格式如下:【推薦】 DELETE FROM table1 WHERE col1 = ? 3.7 游游標(biāo)標(biāo)語語句句 格式如下:【推薦】 程序中使用顯示游標(biāo)。格式如下 OPEN cur_name; LOOP FETCH cur_ into ; EXIT WHEN cur_name%notfound; END LOOP; CLOSE cur_name; 3.8IF 語語句句 條件執(zhí)行語句 IFELSE 按以下格式編寫:【推薦】 IF THEN ELSE (或 ELSIF) THEN END IF; 在 IFTHEN 和 ELSE(或 ELSIF)及 ELSETHEN 和 ENDIF 間可包含一條或多條 PL/SQL 語句,而不需要加 BEGIN 和 END IFELSEENDIF 語句可以嵌套; 注意 ELSIF 的寫法; if 后的條件要用括號括起來,括號內(nèi)每行最多兩個條件。 例如: if (v_count = 1 or v_count = 2 or v_count = 5 or v_count = 6 ) then select sysdate into v_date from dual; end if; oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 10 - 減少控制語句的檢查次數(shù),如在 else(if.else)控制語句中,對最常用符合條件,盡 量往前被檢查到。 例如:以下例如不符合規(guī)范(假設(shè) v_count = 1 條件大數(shù)情況會被滿足) if (v_count = 0) then null; elsif (v_count = 1) then null; end if; 應(yīng)如下書寫:應(yīng)如下書寫: if (v_count = 1) then null; elsif (v_count = 0) then null; end if; 盡量避免使用嵌套的 if 語句,在這種情況應(yīng)使用多個 if 語句來判斷其可能。 例如:例如:以下例如不符合規(guī)范 if v_count =0 then if v_flag = 0 then null; else null; end if; else v_count =1 then if v_flag = 0 then null; else null; end if; end if; oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 11 - 應(yīng)如下書寫:應(yīng)如下書寫: if (v_count = 0) and (v_flag = 0) then null; elsif (v_count = 0 ) and (v_flag = 1) then null; elsif (v_count = 1) and (v_flag = 0) then null; elsif (v_count = 1) and (v_flag = 1) then null; end if; 3.9 簡簡單單循循環(huán)環(huán)語語句句 LOOP EXIT WHEN END LOOP; 3.10FOR 循循環(huán)環(huán)語語句句 FOR 變量 IN 變量取值范圍 LOOP END LOOP; 3.11WHILE 循循環(huán)環(huán)語語句句 WHILE LOOP END LOOP; 3.12 程程序序塊塊規(guī)規(guī)范范 在 sql 代碼塊中盡量使用 begin.end 語句塊,提高代碼可讀性。 對于觸發(fā)器、存儲過程、函數(shù)等帶名的程序塊,要使用塊結(jié)束標(biāo)識。 oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 12 - 如 CREATE OR REPLACE PROCEDURE p_get_userinfo BEGIN END p_get_userinfo;/* 此處的過程名 p_get_userinfo 是可選的,規(guī)范要求寫上,與 塊開始的 CREATE 相對應(yīng) */ 3.13 語語法法規(guī)規(guī)范范 避免隱式的數(shù)據(jù)類型轉(zhuǎn)換。 說明:在書寫代碼時,必須確定表的結(jié)構(gòu)和表中各個字段的數(shù)據(jù)類型,特別是書 寫查詢條件時的字段就更要注意了。 例如:以下代碼不符合規(guī)范, status_type 是 number 型數(shù)據(jù). select wdj.wip_entity_id from wip.wip_discrete_jobs wdj where wdj.status = 3; 應(yīng)如下書寫: select wdj.wip_entity_id from wip.wip_discrete_jobs wdj where wdj.status = 3; 不要將空的變量值直接與比較運(yùn)算符(符號)比較。如果變量可能為空,應(yīng)使用 is null 或 is not null 或 nvl 函數(shù)進(jìn)行比較。 例如:以下代碼不符合規(guī)范 if v_user_name = null then dbms_output.put_line(user name is null); end if; 應(yīng)該如下書寫: if v_user_name is null then dbms_output.put_line(user name is null); end if; 對于非常復(fù)雜的 sql(特別是多層嵌套,帶子句或相關(guān)的查詢 ),應(yīng)該先考慮是否設(shè) 計不當(dāng)引起的,對于復(fù)雜的一些 sql 可以考慮使用程序?qū)崿F(xiàn),原則上遵循一句話只 做一件事情。 盡可能地使用相關(guān)表字段的類型定義,形如 %type、%rowtype。 oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 13 - 存儲過程中變量的聲明應(yīng)集中在 as 和 begin 關(guān)鍵字之間,不允許在代碼中隨意定 義變量,定義變量時,完成相同功能模塊的變量應(yīng)放在一起,與不同模塊的變形量 應(yīng)空行隔開,增加代碼的可讀性。 order by 后面字段不唯一時分頁會出現(xiàn)問題,分頁時如果 order by 后面的字段不 唯一,一定要讓 order by 唯一,最佳方案是增加一 pk,如實在沒辦法則可以追加 rowid,order by 后盡量避免使用 rowid。 使用 varchar2 代替 varchar 類型。 當(dāng)存儲過程有多個分支返回時,若有事務(wù),需確保各個分支都結(jié)束了事務(wù)。 in、out 參數(shù)應(yīng)按類別分開書寫,不要交叉,對于 out 參數(shù),特別是 nest table、record,盡量都帶上 nocopy,提高程序的運(yùn)行效率。 聚集函數(shù) max、min、sum 在沒有記錄得符合查詢條件的情況下返回 null,不會產(chǎn) 生 no_data_found 異常。 原則上不要使用動態(tài) sql,如果非得使用運(yùn)態(tài) sql,須綁定變量。 【推薦】 盡量不要使用子函數(shù)方式實現(xiàn)存儲過程,應(yīng)分別定義。 【推薦】 代碼中不建議使用 goto 語句。 【推薦】 確保所的變量和參數(shù)都使用到。 【推薦】 確保變量和參數(shù)在類型和長度與表數(shù)據(jù)列類型和長度相匹配。如果與表數(shù)據(jù)列寬度 不匹配,則當(dāng)較寬或較大的數(shù)據(jù)傳進(jìn)來時會產(chǎn)生運(yùn)行異常。 例如:例如:如 fnd_users 表 user_name 字符寬為 50,當(dāng)用戶名大于 10 時會報錯。 declare v_user_name varchar2(10); begin select fu.user_name into v_user_name from fnd_user fu where fu.user_id = p_user_id; end; 當(dāng)一個 PL/SQL 或 SQL 語句中涉及到多個表時,始終使用別名來限定字段名,這 使其它人閱讀起來更方便,避免了含議模糊的引用,其中能夠別名中清晰地判斷出 表名。別名命名時,盡量避逸使用無意義的代號 a、 b、c,而應(yīng)該有意義 (如 表 system_items_b 對應(yīng)別名為 msi,po_headers_all 別名對應(yīng)為 pha)。 例如:例如:以下編碼不符合規(guī)范: select wip_entity_name,a.wip_entity_id,a.date_released oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 14 - from wip.wip_entities b, wip.wip_discrete_jobs a where b.wip_entity_id = a.wip_entity_id and a.status_type = 3 and a.date_released trunc(sysdate) 應(yīng)如下書寫:應(yīng)如下書寫: select we.wip_entity_name, wdj.wip_entity_id, wdj.date_released from wip.wip_entities we, wip.wip_discrete_jobs wdj where we.wip_entity_id = wdj.wip_entity_id and wdj.status_type = 3 and wdj.date_released trunc(sysdate) 4.設(shè)計規(guī)范設(shè)計規(guī)范 4.1 一一般般表表設(shè)設(shè)計計 表空間設(shè)計,原則上表空間名與 schema 名一致,其索引所在空間為 schema name + index。 如: schema 為 INV,則默認(rèn)的表空間應(yīng)該為 INV,所對應(yīng)的索引空間為 INVINDEX tablespace每個表在創(chuàng)建時候,必須指定所在的表空間,不要采用默認(rèn)表空間, 以防止表建立在 system 空間上,導(dǎo)致性能問題。對于事務(wù)比較繁忙的數(shù)據(jù)表,必 須存放在在該表專用空間中。 根據(jù)性能需要,可以適當(dāng)可曾加冗余; 4.2 特特殊殊表表設(shè)設(shè)計計原原則則 分區(qū)表對于數(shù)據(jù)量比較大的表,根據(jù)表數(shù)據(jù)的屬性進(jìn)行分區(qū),以得到較好的性 能。如果表按某些字段進(jìn)行增長,則采用按字段值范圍攻進(jìn)行分區(qū);如果表按某個 字段的幾個關(guān)鍵值進(jìn)行分布,則采用列表分區(qū);對于靜態(tài)表,則采用 hash 分區(qū)或 oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 15 - 列表分區(qū);在范圍分區(qū)中,如果數(shù)據(jù)按某關(guān)鍵字段均衡分由,則采用子分區(qū)的復(fù)合 分區(qū)法。 在分區(qū)表中不建議使用全局索引,因為 trunc 分區(qū)時會導(dǎo)致全局索引失效,造成難 以維護(hù)。 4.3 索索引引設(shè)設(shè)計計原原則則 每個索引在創(chuàng)建時,必須指定表空間,不要采用默認(rèn)表空間,以防止索引建立在 system 空間和非索引專用空間,以減少 IO 沖突,提高性能。 4.4 完完整整性性設(shè)設(shè)計計原原則則 主鍵約束原則上所有的數(shù)據(jù)表都要有主鍵。對于數(shù)據(jù)量比較大的表,要求指定 索引字段。 外鍵關(guān)聯(lián)對于關(guān)聯(lián)兩個表字段,一般應(yīng)該分別建立主鍵、外鍵。實際是否建立 外鍵,根據(jù)對數(shù)據(jù)完整性的要求決定。為了提高性能,對于數(shù)據(jù)量較大的表要求對 外鍵建立索引。對于有要求級聯(lián)刪除屬性的外鍵,必須指定 on delete cascade. Null 值對于字段能否為 null,應(yīng)該在 sql 建表腳本中明確指定,不應(yīng)該使用缺 省。由于 null 值在參加任何計算時,結(jié)果均為 null,所以在程序中必須用 nvl()函 數(shù)把可能為 null 值的字段或變量轉(zhuǎn)換非 null 的默認(rèn)值。 Check 條件對于字段有檢查性約束,需指定 check 原則。 4.5 觸觸發(fā)發(fā)器器 觸發(fā)器是一種特殊的存儲過程,通過數(shù)據(jù)表的 DML 操作而觸發(fā)執(zhí)行,其作用為 確保數(shù)據(jù)的完整性和一致性不被破壞而創(chuàng)建,實現(xiàn)數(shù)據(jù)的完整性約束。 說明:觸發(fā)器的 before 或 after 事務(wù)屬性的選擇時候,對表操作的事務(wù)屬性必須 與應(yīng)用程序保持一致,以避免死鎖發(fā)生,在大型導(dǎo)入表中,盡量避免使用觸發(fā)器。 在系統(tǒng)中不要使用過多的觸發(fā)器。 4.6 視視圖圖設(shè)設(shè)計計 盡量使用簡單的視圖,避免使用復(fù)雜的視圖。 簡單視圖:數(shù)據(jù)來自單個表,且無分組 (distinct/group by)、無函數(shù)。 復(fù)雜視圖:數(shù)據(jù)來自多個表,或有分組、有函數(shù)。 4.7 性性能能優(yōu)優(yōu)化化 避名頻繁 commit,尤其是把 commit 寫在循環(huán)體中每次循環(huán)都進(jìn)行 commit。 使用綁定變量,避免常量的直接引用。 例如:以下書寫不符合本規(guī)范 . insert into sm_users(user_id,user_name,created_by,creation_date) values oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 16 - (1,Tang,-1,sysdate); 建議用如下方式操作:建議用如下方式操作: declare v_user_id sm_users.user_id%type; v_user_name sm_users_user_name%type; v_created_by sm_users.created_by%type; v_creation_date sm_users.creation_date%type; begin insert into sm_users( user_id, user_name, created_by, creation_date) values( v_user_id, v_user_name, v_created_by, v_creation_date); in、exists 的使用規(guī)范 例如:例如:當(dāng)有 A、B 兩個結(jié)果集,當(dāng)結(jié)果集 B 很大時, A 較小時,適用 exists,如: select * from a where exists(select 1 from b where a.column = b.column); 當(dāng)結(jié)果集當(dāng)結(jié)果集 A 很大時,很大時, B 很小時,適用很小時,適用 in,如:如: select * from a oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 17 - where a.column in ( select b.column from b ) 避免不必要的排序 說明:說明:對查詢結(jié)果進(jìn)行排序會大大的降低系統(tǒng)的性能。 對于數(shù)字型的唯一鍵值,用序列 sequence 產(chǎn)生。 索引的規(guī)則: 建立索引常用的原則如下:建立索引常用的原則如下: 1).表的主鍵、外鍵必須有索引 2).1000 行的表應(yīng)該有索引 3).經(jīng)常與其它表進(jìn)行連接的表,在邊接字段上應(yīng)建立索引 4).經(jīng)常出現(xiàn)在 where 子句中的字段且過濾性極強(qiáng)的,特別是大表的字段,應(yīng)該 建立索引 5).索引字段,盡量避免值為 null 6).復(fù)合索引的建立需要仔細(xì)分析;盡量考慮用單字段索引代替; A.正確選擇復(fù)合索引中的第一個字段,一般是選擇性較好的且在 where 子句中常的字段上; B.復(fù)合索引的幾個字段是否經(jīng)常同時以 and 方式出現(xiàn)在 where 子句中? 單字段查詢是否極少其至沒有?如果是,則可以建立復(fù)合索引;否則考慮 單字段索引; C.如果復(fù)合索引中包含的字段經(jīng)常單獨出現(xiàn)在 where 子句中,則分解為 多個單字段索引; D.如果復(fù)合索引所包含的字段超過 3 個,那么仔細(xì)考慮其必要性,考慮 減少復(fù)合的字段; E.如果既有單字段索引,又有這幾個字段上的復(fù)合索引,一般可以刪除 復(fù)合索引; 7).頻繁 DDL 的表,不要建立太多的索引; 8).刪除無用的索引,避免對執(zhí)行計劃造成負(fù)面影響; 讓 SQL 語句用上合理的索引。 oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 18 - 原則如下:原則如下: 首先,首先,看是否用上了索引,對于該使用索引而沒有用上索引的 SQL 語句,應(yīng)該想 辦法用上索引。 其次,其次,看是否用上了索引,特別復(fù)雜的 SQL 語句,當(dāng)其中 where 子句包含多個帶 有索引的字段時,更應(yīng)該注意索引的選擇是否合理。錯誤的索引不僅不會帶來性能的 提高,相反往往導(dǎo)致性能的降低。 針對如何用上合理的索引,以 Oracle 數(shù)據(jù)中的例子進(jìn)行說明: 任何對列的操作都可能導(dǎo)致全表掃描,這里所謂的操作包括數(shù)據(jù)庫函數(shù)、計 算表達(dá)式等等,查詢時要盡可能將操作移至等式的右邊,甚至去掉函數(shù)。 避免不必要的類型轉(zhuǎn)換,要了解“隱藏”的類型轉(zhuǎn)換。 增加查詢的范圍,限制全范圍的搜索。 索引選擇性低,但數(shù)據(jù)分布差異很大時,仍然可以利用索引提高效率。 Oracle 優(yōu)化器無法用上合理索引的情況下,利用 hint 強(qiáng)制指定索引。 使用復(fù)合索引且第一個索引字段沒有出現(xiàn)在 where 中時,建議使用 hint 強(qiáng)制。 pl/sql 使用短路徑法,當(dāng)計算邏輯表達(dá)式,即:一旦確定后, pl/sql 停止計算表達(dá) 式。 【推薦】 not in 的替換寫法【推薦】 例如: select deptno from dept where deptno not in (select deptno from emp) 建議寫成:建議寫成: select deptno from dept, emp where dept.deptno = emp.deptno(+) and emp.deptno is null oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 19 - like 子句盡量前端匹配【推薦】 like 參數(shù)使用得非常頻繁,因此如果能夠?qū)τ?like 子句使用索引,將很好地提高查詢 的效率。 例如:例如:查詢城市代碼 select * from city where city_name like %ZHEN% 修改為修改為 select * from city where city_name like SHNEZHEN% 避免使用 select * 語句。 說明:不要用 *來代替所有字段,應(yīng)給出字段列表,注:不包含 select coun(*).例例 如:如:以下不符合規(guī)范: insert 語句必須給出字段列表,使用 insert 語句一定要給出要插入的字段列表,這 樣即使更改了表結(jié)構(gòu)加了字段也不會使用引用了本表的存儲過程失效。 從表中同一筆記錄中獲取記錄的字段值,須使用同一 SQL 語句得到,不允許分多 條 SQL 語句。 例如:例如:以下不符合此規(guī)范 select duty_id into v_duty_id from sm_duty where rownum=1; select duty_name into v_duty_name from sm_duty where rownum=2; 應(yīng)如下書寫:應(yīng)如下書寫: select duty_id,duty_name oracle 編碼規(guī)范 大慶金橋信息技術(shù)工程有限公司 - 20 - into v_duty_id,v_duty_name from sm_duty where rownum=1 5.書寫規(guī)范書寫規(guī)范 5.1 縮縮進(jìn)進(jìn)風(fēng)風(fēng)格格 程序塊采用縮進(jìn)風(fēng)格書寫,保證代碼清晰易讀,風(fēng)格一致,縮進(jìn)格數(shù)統(tǒng)一為 2 個。 必須使用空格,不允許使用 TAB 鍵。 具體語句參考“編碼規(guī)范”小節(jié) 5.2 空空格格及及換換行行 不允許把多個語句寫在一行中,即一行只寫一條語句。 例如:以下書寫不符合規(guī)范: v_count :=1; v_creation_date := sysdate; 應(yīng)寫成:應(yīng)寫成: v_count := 1; v_creation_date := sysdate; 相對獨立的程序塊之間必須加空行。兩個程序塊在邏輯上相對獨立,應(yīng)用空行加以 分隔,同時增加注釋。 超過 80 列的語句要分行書寫,長表達(dá)式應(yīng)在低先級操作符處換行,操任符或關(guān)鍵 字放在新行之首。劃分出新行應(yīng)當(dāng)適當(dāng)?shù)乜s進(jìn),使排版整齊,語句可讀。 begin、end 獨立

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論