在mysql中,可以使用CALL語(yǔ)句來(lái)調(diào)用存儲(chǔ)過(guò)程,該語(yǔ)句接收存儲(chǔ)過(guò)程的名字以及需要傳遞給它的任意參數(shù),語(yǔ)法為“CALL sp_name([parameter[…]]);”。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
調(diào)用存儲(chǔ)過(guò)程
MySQL 中使用 CALL 語(yǔ)句來(lái)調(diào)用存儲(chǔ)過(guò)程。調(diào)用存儲(chǔ)過(guò)程后,數(shù)據(jù)庫(kù)系統(tǒng)將執(zhí)行存儲(chǔ)過(guò)程中的 SQL 語(yǔ)句,然后將結(jié)果返回給輸出值。
CALL 語(yǔ)句接收存儲(chǔ)過(guò)程的名字以及需要傳遞給它的任意參數(shù),基本語(yǔ)法形式如下:
CALL sp_name([parameter[...]]);
其中,sp_name 表示存儲(chǔ)過(guò)程的名稱,parameter 表示存儲(chǔ)過(guò)程的參數(shù)。
示例1:
創(chuàng)建存儲(chǔ)過(guò)程
-
創(chuàng)建名稱為 ShowStuScore 的存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程的作用是從學(xué)生成績(jī)信息表中查詢學(xué)生的成績(jī)信息
mysql> DELIMITER // mysql> CREATE PROCEDURE ShowStuScore() -> BEGIN -> SELECT * FROM tb_students_score; -> END // Query OK, 0 rows affected (0.09 sec)
結(jié)果顯示 ShowStuScore 存儲(chǔ)過(guò)程已經(jīng)創(chuàng)建成功。
-
創(chuàng)建名稱為 GetScoreByStu 的存儲(chǔ)過(guò)程,輸入?yún)?shù)是學(xué)生姓名。存儲(chǔ)過(guò)程的作用是通過(guò)輸入的學(xué)生姓名從學(xué)生成績(jī)信息表中查詢指定學(xué)生的成績(jī)信息
mysql> DELIMITER // mysql> CREATE PROCEDURE GetScoreByStu -> (IN name VARCHAR(30)) -> BEGIN -> SELECT student_score FROM tb_students_score -> WHERE student_name=name; -> END // Query OK, 0 rows affected (0.01 sec)
調(diào)用存儲(chǔ)過(guò)程
-
調(diào)用名稱為 ShowStuScore和GetScoreByStu的存儲(chǔ)過(guò)程
mysql> DELIMITER ; mysql> CALL ShowStuScore(); +--------------+---------------+ | student_name | student_score | +--------------+---------------+ | Dany | 90 | | Green | 99 | | Henry | 95 | | Jane | 98 | | Jim | 88 | | John | 94 | | Lily | 100 | | Susan | 96 | | Thomas | 93 | | Tom | 89 | +--------------+---------------+ 10 rows in set (0.00 sec) Query OK, 0 rows affected (0.02 sec) mysql> CALL GetScoreByStu('Green'); +---------------+ | student_score | +---------------+ | 99 | +---------------+ 1 row in set (0.03 sec) Query OK, 0 rows affected (0.03 sec)
因?yàn)榇鎯?chǔ)過(guò)程實(shí)際上也是一種函數(shù),所以存儲(chǔ)過(guò)程名后需要有( )符號(hào),即使不傳遞參數(shù)也需要。
【