存儲過程語法


DB2中存儲過程包括存儲過程頭和存儲過程體

存儲過程頭
create procedure sum(in  p_a integer,
                     in  p_b integer,
                     out p_s integer)
     language sql
     specific sum_ab
begin
     set p_s = p_a + p_b;
end

a、名稱:模式加名稱,如:db2admin.reademp
b、參數:1 模式:in/out/inout
                  2 名稱:建議以P_開頭
                  3 數據類型
c、調用存儲過程,如:call sun(100,200,?)
d、刪除存儲過程 drop procedure sum(integer,integer,integer)
e、dynamic result sets指定了返回的最大結果集數目(后面跟數字)
f、contains sql (不含查詢和更新語句)  
   reads sql data:只含查詢語句
   modifies sql data:含查詢和更新,限制最少
   精確定義以上3項,可提高存儲過程執行性能
g、deterministic:對於相同的輸入參數,每次返回的結果都是相同的,結果集   放在內存中可以重用,因此可以提高運行性能;
   not deterministic:缺省,不推薦
h、language sql/c/java 分別對應相應語言存儲過程
i、called on null input:當輸入參數為空值,過程依舊執行,缺省值
j、P昂然meter CCSID:Coded Character Set ID,定義了當字符類的數據傳入   和過程中輸出的編碼模式

存儲過程體:
1、declare 變量名 數據類型
2、流程控制
- CASE   根據對一個或多個條件的計算選擇執行路徑
- FOR    對於表中的每一行執行一個代碼塊
- GET DIAGNOSTICS 將關於前一個SQL語句的信息返回到一個SQL變量中
- GOTO   控制轉移到一個有標簽的塊(一個或者多個語句的塊,由一個唯一的  SQL名稱和冒號標識)
- IF     語句(ELSEIF、ELSE)
- ITERATE將流程控制傳遞到一個有標簽的循環的開頭
- LEAVE  使程序控制離開一個循環代碼塊
- LOOP   多次執行一個代碼塊,直到LEAVE,ITERATE或者GOTO語句控制離開
- REPEAT 重復執行一個代碼塊,直到指定的搜索條件返回真為止
- RETURN 控制從SQL過程返回給調用者
- SET    將一個值賦值給一個輸出變量或者SQL變量
- WHILE  在指定條件為真時重復執行一個代碼塊

創建:db2 -td@ -vf createSQLproc.db2
調用:db2 call 過程名(參數)
      ...
      end@ (此處的@可替換成其他符號)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM