我們都知道任何一種語言,都應該講究一定的規範,因為優秀的**通常都是先讓人讀懂,其次才是機器讀懂。否則沒有任何規範和解釋說明的**,後期維護會增加很多成本,即使是開發者自己維護有時後也會忘了個中邏輯和開發思路。sql也是如此,尤其是儲存過程、自定義函式裡的片段更為重要,筆者目前在維護的是我們公司pmd一期的乙個專案,裡面的儲存過程,最長的有上千行,雖然解釋也有些,但是變數命名規範什麼的,修改儲存過程的時候,真是苦不堪言。貌似扯得遠了,說正題吧pl/sql中正好有個**優化的功能,裡面可以定義規則,但是始終得不到自己想要的效果,於是乎google在部落格裡下了些所謂的pl/sql美化模板,結果效果還是一樣的渣渣。趁著午休的時候研究了下.br的檔案,想自己定義自己的規範,改乙個屬性就對照下.br檔案的改變,大概了解了裡面的語法如下(附件:plsql.br):
version=1
rightmargin=100
//右邊距,間接決定了一行的長度
indent=2
//縮排2個字元
usetabcharacter=false
//使用跳格字元?
tabcharactersize=2
//跳格字元大小
aligndeclarationgroups=true
//是否對齊變數宣告
alignassignmentgroups=true
//是否對齊變數賦值部分
keywordcase=1
//關鍵字的風格 0:不變 1 小寫 2 大寫 3 首字母大寫
identifiercase=3
//識別符號的風格 0:不變 1 小寫 2 大寫 3 首字母大寫
usespecialcase=true
//使用特殊大小寫?
itemlist.format=1
//元素的格式 0:在同一行上 1:盡量放在同一行 2:乙個元素一行 3 :自適應
itemlist.align=true
//是否對齊
itemlist.commaafter=true
//是否在元素後加上逗號
itemlist.atleftmargin=false
emptylines=0
//空行的處理 0:移除 1:並為一行 2:保持原樣
thenonnewline=true
//then 重起一行
looponnewline=true
//loop 重起一行
//資料操作語句時
dml.leftalignkeywords=true
//關鍵字左對齊
dml.leftalignitems=false
//元素左對齊(包括資料庫表字段、表名什麼的)
dml.ononelineifpossible=true
//如果可能在同一行上
dml.wheresplitandor=true
// and/or另起一行
dml.whereandorafterexpression=false
//and/or在表示式後面
dml.whereandorunderwhere=true
//and/or在where 後
dml.joinsplitbeforeon=true
//連線時在on之前分成兩行
//插入語句
dml.insertitemlist.format=1
//元素的格式 0:在同一行上 1:盡量放在同一行 2:乙個元素一行 3 :自適應
dml.insertitemlist.align=false
//是否對齊
dml.insertitemlist.commaafter=true
//在元素後加上逗號
dml.insertitemlist.atleftmargin=false
//元素在左邊
dml.selectitemlist.format=1
//元素的格式 0:在同一行上 1:盡量放在同一行
dml.selectitemlist.align=true
dml.selectitemlist.commaafter=true
dml.selectitemlist.atleftmargin=false
dml.updateitemlist.format=1
dml.updateitemlist.align=true
dml.updateitemlist.commaafter=true
dml.updateitemlist.atleftmargin=false
parameterdeclarationlist.format=1
parameterdeclarationlist.align=true
parameterdeclarationlist.commaafter=true
parameterdeclarationlist.atleftmargin=false
recordfieldlist.format=1
recordfieldlist.align=true
recordfieldlist.commaafter=true
recordfieldlist.atleftmargin=false
splitandor=false
andorafterexpression=false
[specialcase]
當在 pl/sql 中使用識別符號定義變數、常量時,識別符號名稱必須以字元開始,並且長度不能超過 30 個字元。另外,為了提高程式的可讀性,oracle 建議使用者按照以下規則定義各種識別符號:
--當定義變數時,建議使用 v_ 作為字首,例如 v_sal, v_job等。
--當定義常量時,建議使用 c_ 作為字首,例如 c_rate 。
--當定義游標時,建議使用 _cursor 作為字尾,例如 emp_cursor 。
--當定義例外時,建議使用 e_ 作為字首,例如 e_integrity_error。
--當定義 pl/sql 表型別時,建議使用 _table_type 作為字尾,例如 sal_table_type。
--當定義 pl/sql 表變數時,建議使用 _table 作為字尾,例如 sal_table。
--當定義 pl/sql 記錄型別時,建議使用 _record_type 作為字尾,例如 emp_record_type。
--當定義 pl/sql 記錄變數時,建議使用 _record 作為字尾,例如 emp_record。
ps:有那位大神知道怎麼定義更加完美的美化規則檔案或者可以分享下嗎?我想要的效果是資料表名和欄位名 都按照「駝峰」的規範,而別名則一律小寫,定義的變數也按照」駝峰「。簡單來說就是能不能在辨識符中區分出 資料表的欄位名和別名? plsql程式設計詳解 二
九 迴圈語句 一共有三種迴圈方式 oracle中沒有自增 自身 自身 1即可 while 條件 loop end loop loop exit when 條件 end loop for i in 1.5 必須為連續區間 loop end loop 例1 while迴圈列印數字的1 10set ser...
Kohana ORM 規則詳解
orm 約定 kohana orm 類遵循以下幾個條件。大多數的條件都是由 orm 的效能所決定的 表名是複數形式,例如 users 設定 table names plural 為 false 可以重寫 模型的名字是表名的單數形式 例如 user 並加上 model 字尾。例如 user model...
pacemaker規則詳解
譯文原 為 如果最外層的約束規則求值結果為false,集群則會視為該規則無效。當最外層的約束規則計算為true時,與規則相關聯的資源的分數將會被更新,並選擇資源在哪個節點執行。如果上面的解釋你聽起來很熟悉,那是應為你已經使用了乙個相對比較簡單的規則語法來建立約束規則了。例子 防止myapachers...