跟屌絲一起學習 DB2 第五課 存儲過程(一)
DB2 存儲過程
一、什么是存儲過程
受 DB2 服務器控制的一段可執行程序
可以通過SQL的CALL語句來完成對存儲過程的調用
在存儲過程中可以包含業務邏輯
存儲過程可以在本地或遠程進行調用
存儲過程可以接收或傳遞參數,生成結果集
二、存儲過程特征
包含使用sql語句的過程構造
存儲在數據庫中且在db2 服務器上運行;
可以由正在使用的sql的應用程序根據名稱來調用;
允許應用程序分2部分允許,在客戶機上運行應用程序,在服務器上運行存儲過程
存儲過程在應用程序中的優勢
減少了客戶機與服務器直接的網絡使用率
增強了硬件和軟件功能
提高了安全性
減少了開發成本并且提高了可靠性
集中處理了公共例程的安全性、管理和維護
通過sql pl 當前的語句集合和語言特性,可以用sql開發綜合的、高級的程序
例如函數、存儲過程和觸發器。這樣便可以將業務邏輯封裝到易于維護的數據庫對象中,從而提高數據庫應用程序的性能。
SQL PL 支持本地和全局變量,包括聲明和賦值,還支持條件語句和迭代語句、控制語句的轉移、錯誤管理語句以及返回結果集的方法。
三、什么時候使用存儲過程
使用存儲過程的合適時機:
應用程序的性能無法滿足預期時
客戶端數量較多且應用程序中SQL代碼分散時
應用程序需要進行繁重的數據庫操作,同時這些操作并不需要進行太多的客戶交互
應用程序代碼更改頻繁
需要對客戶應用代碼進行訪問控制時
客戶應用需要在一次操作中執行多條 SQL 語句
五、數據類型

字符型:char varchar
日期型 date
數字型 number decilmal integer
詳細請看屌絲大哥 db2數據類型介紹的那一課
六、Db2 存儲過程基本語法
6.1 存儲過程結構
CREATE OR REPLACE PROCEDURE <過程名>
( [ IN | OUT | INOUT ] 參數名 數據類型 默認值 )
LANGUAGE SQL
BEGIN
業務邏輯代碼
END;
IN(輸入參數)
只是將實參傳遞給存儲過程,但在存儲過程中不能對其進行修改。換句話說,對于存儲過程而言它是只讀的。
OUT(輸出參數)
在存儲過程結束時向調用者返回。一般在過程中都會被賦值。
INOUT(輸入輸出參數)
上述兩種參數類型的結合體。它可以幫助調用者將實參傳遞給進程,另外它也能夠作為輸出參數被修改和賦值。
復合語句實例
復合語句是指包含在BEGIN和END間的語句。它一般包括如下語句類型:
聲明語句
賦值語句
控制語句
條件處理語句
說明:
1. 復合語句可以嵌套使用。
2. BEGIN語句可以和標簽組合使用,這樣可以更清晰的標識語句塊的范圍。
6.2 變量聲明與變量賦值
變量聲明語法:
DECLARE 變量名 數據類型 初始值;
Delcare DiaoSiName varchar(20);
變量賦值語法 :set 變量名=值;
例如:給屌絲姓名變量賦值。
Set DiaoSiName = ‘奶娃’;
變量聲明
DECLARE my_var INTEGER DEFAULT 6;
條件聲明
DECLARE not_found CONDITION FOR SQLSTATE ‘02000’;
游標聲明
DECLARE c1 CURSOR FOR select * from staff;
異常處理器聲明
DECLARE EXIT HANDLER FOR SQLEXCEPTION …;
語法
SET lv_name = expression;
SET lv_name = NULL;
示例
(1) SET salary = salary + salary * 0.1;
(2) SET init_salary = NULL;
(3) SET salary = (select salary from employee where empno = lv_emp_num);
注: 如果 SELECT 語句返回記錄超過一行,示例 3 將會返回SQLERROR。


posted on 2012-12-11 15:56 順其自然EVO 閱讀(2039) 評論(1) 編輯 收藏 所屬分類: DB2