MySQL——呼叫儲存過程和函式
阿新 • • 發佈:2019-02-11
1. 呼叫儲存過程
儲存過程是通過 CALL 語向進行呼叫的,語法如下:
CALL sp_name ( [ parameter [ , ... ] ] )
CALL 語句呼叫一個先前用 CREATE PROCEDURE 建立的儲存過程,其中 sp_name 為儲存過程的引數。
【例】 定義名為 Countproc1 的儲存過程,然後呼叫這個儲存過程。
定義儲存過程的程式碼如下:
mysql> DELIMITER // mysql> CREATE PROCEDURE CountProc1 (IN sid INT, OUT num INT ) -> BEGIN -> SELECT COUNT(*) INTO num FROM fruits WHERE s_id = sid; -> END // Query OK, 0 rows affected (0.42 sec) mysql> DELIMITER ;
【注】COUNT(*) 函式返回在給定的選擇中被選的行數。
呼叫儲存過程的程式碼如下:
mysql> CALL CountProc1 ( 101 , @num );
Query OK, 1 row affected (0.39 sec)
檢視返回結果:
mysql> SELECT @num;
+------+
| @num |
+------+
| 3 |
+------+
2. 呼叫儲存函式
在 MySQL 中,儲存函式的使用方法與 MySQL 內部函式的使用方法是一樣的。換言之,使用者自己定義的儲存函式與 MySQL 的內部函式是一個性質的。 區別在於,儲存函式是使用者自己定義的,而內部函式是 MySQL 的開發者定義的。
【例】 定義儲存函式 CountProc2, 然後呼叫這個函式。
定義儲存函式的程式碼如下:mysql> DELIMITER // mysql> CREATE FUNCTION CountProc2 ( sid INT ) -> RETURNS INT -> BEGIN -> RETURN ( SELECT COUNT(*) FROM fruits WHERE s_id = sid ); -> END // Query OK, 0 rows affected (0.10 sec) mysql> DELIMITER ;
呼叫儲存函式的程式碼如下:
mysql> SELECT CountProc2(101);
+-----------------+
| CountProc2(101) |
+-----------------+
| 3 |
+-----------------+
【注】參考於清華大學出版社《MySQL資料庫應用案例課堂》2016年1月第1版