Oracle存儲過程大冒險-2存儲過程經常使用語法

存儲過程和函數能夠放在同一個包下方便管理,如同java的package,瞭解了存儲過程後就知道前輩是多麼爽了,全都在sql裏,不用像咱們sql查出來還要用轉成java對象進行邏輯處理。。java

經常使用語法

  1. 存儲過程建立CREATE OR REPLACE PROCEDURE 存儲過程名(參數1 IN,參數2 OUT) is begin xxx end
  2. 存儲過程有三種參數類型IN OUT INOUT,對應傳入、傳出、傳入傳出值。設置參數若沒寫具體類型則默認爲IN類型
  3. 異常信息處理:raise 後跟異常 表示拋出 的異常,或者在異常內用 others then
  4. 遊標cursor是最爲關鍵的知識點,就是查詢出來的結果集循環作操做,要了解它的多種定義與使用open、for循環,遊標也能夠設置傳入參數

一、建立遊標:cursor 遊標名 is 結果集
二、打開遊標 open 遊標名
三、loop循環遊標取數據 fetch 遊標名 into 變量(通常 begin for 遊標變量 in 遊標 loop,用單個遊標.屬性來取數據 end loop end)
四、關閉遊標 close 遊標名正則表達式

  1. %FOUND用法,能夠和遊標聯合使用:遊標變量%FOUND,如有數據則是true,同理也有%NOTFOUND
  2. for xx in(select * from table ) begin 一頓操做 end 也能夠達到和遊標相同效果
  3. 分析函數keep()的用法,取同一個分組下以某個字段排序後,對指定字段取最小或最大的那個值。通常用 聚合函數| max(column1) keep (dense_rank first或last order by column2) over (partion by column3),表示按照column2排序後的首個或最後數據再取聚合函數(column1)
  4. row_number()over() (partition by xx order by xx) num 分組再排序,以及和自帶的rownum的區別:rownum 是結果集出來後排序的必須從1開始。
  5. goto 一個<標籤>,能跳出循環,至關於 java裏的break,不過要如今外層設置標籤例如**<outter>**則可直接跳轉出來
  6. 對於數據的操做:MOD ()求餘數,round四捨五入,ceil向上取整,floor向下取整,trunc截取整數部分,abs絕對值
  7. order by 和 decode()連用,能夠將很差排序的字段設置爲數字進行排序,例如order by decode(字段A,'b',1,'c',2,3),字段A若是是b就是1,c就是2.不然是3這樣就至關於字段A就是1,2,3這種順序關係。
  8. if a= elseif a= end if判斷條件語句
  9. := 賦值。 如 a:=3
  10. aa.bb%type 數據類型爲aa表的bb字段的數據類型,這坨代碼是定義變量時放變量後的
  11. reverse的用法,1..0 reverse 從1到0反向循環
  12. sign(表達式)函數,若表達式小於0返回-1,等於0返回0,大於0返回1
  13. decode用法,decode(a,'a',1,'b',2,3)。若a等於a則返回1,等於b則返回2 不然返回3。
  14. 外、左、右鏈接 用+的寫法
  15. 正則表達式的用法
相關文章
相關標籤/搜索