存儲過程和函數能夠放在同一個包下方便管理,如同java的package,瞭解了存儲過程後就知道前輩是多麼爽了,全都在sql裏,不用像咱們sql查出來還要用轉成java對象進行邏輯處理。。java
經常使用語法
- 存儲過程建立CREATE OR REPLACE PROCEDURE 存儲過程名(參數1 IN,參數2 OUT) is begin xxx end
- 存儲過程有三種參數類型IN OUT INOUT,對應傳入、傳出、傳入傳出值。設置參數若沒寫具體類型則默認爲IN類型
- 異常信息處理:raise 後跟異常 表示拋出 的異常,或者在異常內用 others then
- 遊標cursor是最爲關鍵的知識點,就是查詢出來的結果集循環作操做,要了解它的多種定義與使用open、for循環,遊標也能夠設置傳入參數
一、建立遊標:cursor 遊標名 is 結果集
二、打開遊標 open 遊標名
三、loop循環遊標取數據 fetch 遊標名 into 變量(通常 begin for 遊標變量 in 遊標 loop,用單個遊標.屬性來取數據 end loop end)
四、關閉遊標 close 遊標名正則表達式
- %FOUND用法,能夠和遊標聯合使用:遊標變量%FOUND,如有數據則是true,同理也有%NOTFOUND
- for xx in(select * from table ) begin 一頓操做 end 也能夠達到和遊標相同效果
- 分析函數keep()的用法,取同一個分組下以某個字段排序後,對指定字段取最小或最大的那個值。通常用 聚合函數| max(column1) keep (dense_rank first或last order by column2) over (partion by column3),表示按照column2排序後的首個或最後數據再取聚合函數(column1)
- row_number()over() (partition by xx order by xx) num 分組再排序,以及和自帶的rownum的區別:rownum 是結果集出來後排序的必須從1開始。
- goto 一個<標籤>,能跳出循環,至關於 java裏的break,不過要如今外層設置標籤例如**<outter>**則可直接跳轉出來
- 對於數據的操做:MOD ()求餘數,round四捨五入,ceil向上取整,floor向下取整,trunc截取整數部分,abs絕對值
- order by 和 decode()連用,能夠將很差排序的字段設置爲數字進行排序,例如order by decode(字段A,'b',1,'c',2,3),字段A若是是b就是1,c就是2.不然是3這樣就至關於字段A就是1,2,3這種順序關係。
- if a= elseif a= end if判斷條件語句
- := 賦值。 如 a:=3
- aa.bb%type 數據類型爲aa表的bb字段的數據類型,這坨代碼是定義變量時放變量後的
- reverse的用法,1..0 reverse 從1到0反向循環
- sign(表達式)函數,若表達式小於0返回-1,等於0返回0,大於0返回1
- decode用法,decode(a,'a',1,'b',2,3)。若a等於a則返回1,等於b則返回2 不然返回3。
- 外、左、右鏈接 用+的寫法
- 正則表達式的用法