Java基礎89 MySQL存儲過程

一、MySQL存儲過程    

  1.一、什麼是存儲過程html

      帶有邏輯的sql語句;帶有流程控制語句(if  while)等等 的sql語句mysql

  1.二、存儲過程的特色sql

      1)執行效率很是快,存儲過程是數據庫的服務器端執行的。
      2)移植性不好,不一樣數據庫的存儲過程是不能移植的。數據庫

二、存儲過程的語法    

-- 建立存儲過程
1
DELIMITER $  -- 聲明存儲過程的結束符 2 CREATE PROCEDURE pro_test() -- 建立存儲過程 存儲過程的名稱(參數列表) 3 BEGIN  -- 開始
4 5     -- 這中間能夠寫多個sql語句     -- sql語句+流程控制等 6   7 END $ -- 結束 結束符
1 --執行存儲過程
2 CALL pro_test(); -- call存儲過程的名稱(參數)
1 -- 存儲過程名稱裏面的參數:
2 IN :表示輸入參數,能夠攜帶數據存儲過程當中
3 OUT:表示輸出參數,能夠從存儲過程當中返回結果
4 INOUT:表示輸入輸出參數,既能夠輸入功能,也可輸出功能
-- 刪除存儲過程
1 DROP PROCEDURE pro_test; -- 刪除存儲過程  存儲過程的名稱;

三、實例演示          

  3.一、帶有參數的存儲過程           Java代碼調用存儲過程的方法:http://www.javashuo.com/article/p-gpsfuqrn-m.html服務器

1 -- 需求:傳入一個員工的id,查詢員工的信息
2 DELIMITER $
3     CREATE PROCEDURE pro_findById(IN eid INT) -- IN: 輸入參數; eid:傳入參數的名稱; int:傳入參數的類型
4 BEGIN
5     SELECT * FROM employee WHERE id = eid;
6 END $
7 
8 -- 調用 
9 CALL pro_findByID(4)

調用pro_findByID() 後的結果圖編碼

         

  3.二、帶有輸出參數的存儲過程spa

 1 -- 帶有輸出參數的存儲過程
 2 DELIMITER $
 3    CREATE PROCEDURE pro_test_out(OUT str VARCHAR(20))  -- out:輸出參數
 4 BEGIN
 5    -- 給參數賦值
 6    SET str = 'helloMySQL';
 7 END $
 8 
 9 CALL pro_test_out(@NAME); -- 調用pro_test_out存儲過程
10 SELECT @NAME; -- 查詢pro_test_out存儲過程
11 
12  -- 如何返回接收的返回數值
13  -- ****mysql的變量******
14  -- 全局變量(內置變量):mysql數據庫中內置的變量(全部鏈接都起做用)
15  -- 查看全部的全局變量:show variables;
16  -- 查看某個全局變量:select @@變量名
17  -- 修改全局變量:set 變量名 = 新值
18  
19  -- 會話變量:只存在於當前客戶端與數據庫的一次鏈接當中;若是斷開,那麼會話變量將所有失效(丟失)。
20  -- 定義會話變量: set @變量 = 值;
21  -- 查看會話變量: select @變量;
22  -- character_set_client: 服務器的接收編碼
23  -- character_set_results: 服務器的輸出編碼
24    
25  -- 局部變量:在存儲過程當中使用的變量就叫局部變量;只要存儲過程執行完畢,局部變量就丟失。
26  

結果圖3d

  3.三、帶有輸入輸出參數的存儲過程code

 1 -- 帶有輸入輸出參數的存儲過程
 2 DELIMITER $
 3    CREATE PROCEDURE pro_test_InOut(INOUT n INT)  -- INOUT: 輸入輸出參數
 4 BEGIN
 5    -- 查看變量
 6    SELECT n;
 7    SET n=500;    
 8 END $
 9 
10 -- 調用
11 SET @n=10;
12 CALL pro_test_InOut(@n);
13 SELECT @n;

結果圖htm

         

  3.四、帶有條件判斷存儲過程

 1 -- 需求:輸入一個整數,若是是1,則返回'星期一';若是是2,則返回'星期二';若是是3,則返回'星期三'。若是是其餘,則返回'輸入有誤'
 2 DELIMITER $
 3   CREATE PROCEDURE pro_testIf(IN num INT,OUT str VARCHAR(32))
 4 BEGIN
 5    IF num=1 THEN
 6       SET str = '星期一';
 7    ELSEIF num = 2 THEN
 8       SET str = '星期二';
 9    ELSEIF num = 3 THEN
10       SET str = '星期三';
11    ELSE
12       SET str = '輸入錯誤';
13    END IF;
14 END $
15 
16 CALL pro_testIf(3,@str);
17 SELECT @str;

結果圖

  3.五、帶有循環功能的存儲過程

 1 -- 需求:輸入一個整數,求和。例如:輸入100 ,統計1~100的和
 2 DELIMITER $
 3    CREATE PROCEDURE pro_testWhile(IN num INT,OUT result INT)
 4 BEGIN
 5     -- 定義一個局部變量  for(int i=1;i<=100;i++)
 6     DECLARE i INT DEFAULT 1; -- 定義一個局部變量i,int類型,默認值爲1。
 7     DECLARE vsum INT DEFAULT 0; -- 定義一個局部變量vsum,int類型,默認值爲0。
 8     WHILE i <= num DO
 9        SET vsum = vsum + i;
10        SET i = i + 1;
11     END WHILE;
12     SET result = vsum;    
13 END $
14 
15 CALL pro_testWhile(100,@result);
16 SELECT @result;

結果圖

 

 

 

 

 

原創做者:DSHORE

做者主頁:http://www.cnblogs.com/dshore123/

原文出自:http://www.javashuo.com/article/p-ookxqvxn-k.html

歡迎轉載,轉載務必說明出處。(若是本文對您有幫助,能夠點擊一下右下角的 推薦,或評論,謝謝!

相關文章
相關標籤/搜索