用call和你過程名以及一個括號,括號里面根據需要,加入參數,參數包括輸入參數、輸出參數、輸入輸出參數。具體的調用方法可以參看上面的例子。
存儲過程是通過 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 |
+-----------------+