什么是存盤程序
- 一組可編程的函式,是為了完成特定功能的SQL陳述句集
經編譯創建并保存在資料庫中,用戶可通過指定存盤程序的名字并給定引數(需要時)來呼叫執行, - 存盤程序就是具有名字的一段代碼,用來完成一個特定的功能,
- 創建的存盤程序保存在資料庫的資料字典中
為什么要用存盤程序
- 將重復性很高的一些操作,封裝到一個存盤程序中,簡化了對這些SQL的呼叫
- 批量處理
- 統一介面,確保資料的安全
- 相對于oracle資料庫來說,MySQL的存盤程序相對功能較弱,使用較少,
存盤程序的創建和呼叫
創建存盤程序
CREATE PROCEDURE 名稱()
BEGIN
陳述句
END $$
呼叫存盤程序
call 名稱();
洗掉存盤程序
drop procedure 名稱
存盤程序變數
- 在存盤程序中宣告一個變數
- 使用DECLARE陳述句
DECLARE 變數名 資料型別(大小) DEFAULT 默認值;
可以宣告一個名為total_sale的變數,資料型別為INT,默認值為0
DECLARE total_sale INT DEFAULT 0;
- 分配變數值
要為變數分配一個值,可以使用SET陳述句
SET total_count = 10;
使用SELECT INTO陳述句將查詢的結果分配給一個變數
SELECT COUNT(*) INTO total_products FROM products
- 變數的范圍
如果在存盤程序中宣告一個變數,那么當達到存盤程序的END陳述句時,它將超出范圍,因此在其它代碼塊中無法訪問
存盤程序引數
三種型別
-
IN:表示呼叫者向程序傳入值(傳入值可以是字面量或變數)
-
OUT:表示程序向呼叫者傳出值
-
INOUT:INOUT引數是IN和OUT引數的組合,
定義引數:create produce name(模式,引數名稱 資料型別(大小))
存盤程序陳述句
- IF陳述句
IF expression THEN
statements;
END IF;
##################
IF expression THEN
statements;
ELSE
else-statements;
END IF;
- CASE陳述句
CASE case_expression
WHEN when_expression_1 THEN commands
WHEN when_expression_2 THEN commands
...
ELSE commands
END CASE;
- 回圈
WHILE expression DO
statements
END WHILE
#############
REPEAT
statements;
UNTIL expression
END REPEAT
查看存盤程序
查看所有存盤程序:
SHOW PROCEDURE STATUS;
查看指定資料庫中的存盤程序
SHOW PROCEDURE STATUS WHERE db = 'My_test4';
查看指定存盤程序源代碼
SHOW CREATE PROCEDURE 存盤程序名
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/48509.html
標籤:MySQL
上一篇:mysql的視圖
下一篇:MySQL5.6升級5.7步驟
