1. 程式人生 > >Oracle儲存過程大冒險-2儲存過程常用語法

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

開發十年,就只剩下這套架構體系了! >>>   

儲存過程和函式可以放在同一個包下方便管理,如同java的package

常用語法

  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迴圈,遊標也可以設定傳入引數

1、建立遊標:cursor 遊標名 is 結果集
2、開啟遊標 open 遊標名
3、loop循環遊標取資料 fetch 遊標名 into 變數(一般 begin for 遊標變數 in 遊標 loop,用單個遊標.屬性來取資料 end loop end)
4、關閉遊標 close 遊標名

  1. %FOUND用法,可以和遊標聯合使用:遊標變數%FOUND,若有資料則是true,同理也有%NOTFOUND
  2. for xx in(select * from table ) begin 一頓操作 end 也可以達到和遊標相同效果
  3. keep()函式的用法
  4. row_number()over() (partition by xx order by xx) num 分組再排序,以及和自帶的rownum的區別
  5. goto 一個<標籤>,能跳出迴圈,相當於 java裡的break,不過要現在外層設定標籤例如**<outter>**則可直接跳轉出來
  6. 對於資料的操作:MOD ()求餘數,round四捨五入,ceil向上取整,floor向下取整,trunc擷取整數部分
  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,