撩課-Mysql第19部分儲存過程詳解
阿新 • • 發佈:2018-12-19
學習地址:
撩課-JavaWeb系列1之基礎語法-前端基礎
撩課-JavaWeb系列2之XML
撩課-JavaWeb系列3之MySQL
撩課-JavaWeb系列4之JDBC
撩課-JavaWeb系列5之web伺服器-idea
什麼是儲存過程
一組可程式設計的函式,
是為了完成特定功能的SQL語句集
經編譯建立並儲存在資料庫中,
使用者可通過指定儲存過程的名字
並給定引數(需要時)來呼叫執行。
儲存過程就是具有名字的一段程式碼,
用來完成一個特定的功能。
建立的儲存過程儲存在資料庫的資料字典中
為什麼要用儲存過程
將重複性很高的一些操作, 封裝到一個儲存過程中,簡化了對這些SQL的呼叫 批量處理 統一介面,確保資料的安全 相對於oracle資料庫來說, MySQL的儲存過程相對功能較弱, 使用較少。
儲存過程的建立和呼叫
DELIMITER $$ 它與儲存過程語法無關 DELIMITER語句將標準分隔符 - 分號(;)更改為:$$ 因為我們想將儲存過程作為整體傳遞給伺服器 而不是讓mysql工具一次解釋每個語句 告訴mysql直譯器, 該段命令是否已經結束了, mysql是否可以執行了。 預設情況下, delimiter是分號;。 在命令列客戶端中, 如果有一行命令以分號結束, 那麼回車後, mysql將會執行該命令。 但有時候, 不希望MySQL這麼做。 在為可能輸入較多的語句, 且語句中包含有分號。 使用delimiter $$, 這樣只有當$$出現之後, mysql直譯器才會執行這段語句。
建立儲存過程
CREATE PROCEDURE 名稱()
BEGIN
語句
END $$
呼叫儲存過程
call 名稱();
刪除儲存過程
drop procedure 名稱
儲存過程變數
在儲存過程中宣告一個變數
使用DECLARE
語句
DECLARE 變數名 資料型別(大小) DEFAULT 預設值;
可以宣告一個名為total_sale的變數,
資料型別為INT,
預設值為0
DECLARE total_sale INT DEFAULT 0;
宣告共享相同資料型別的兩個或多個變數
DECLARE x, y 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 儲存過程名
如果你想要獲取Xmind思維導圖源件加群:869866610,進群可以獲取以上技術的學習視訊。