對employees數據庫創建存儲過程數據庫
建立不含有輸入輸出變量的存儲過程spa
DELIMITER // -- 設定語句結束分隔符 DROP PROCEDURE IF EXISTS GetEmployees; -- 若是該存儲過程已經存在,則刪除 CREATE PROCEDURE GetEmployees ( ) -- 建立不含有輸入輸出變量的存儲過程 BEGIN SELECT * FROM employees LIMIT 3; END // DELIMITER ; -- 從新設定語句結束分隔符,每次查詢結束後都要將分隔符還原爲;
建立帶有一個輸出變量的存儲過程code
DELIMITER // -- 設定語句結束分隔符 DROP PROCEDURE IF EXISTS GetTotalNum; -- 若是該存儲過程已經存在,則刪除 CREATE PROCEDURE GetTotalNum (OUT TotalNum INT ) -- 建立帶有輸出變量的存儲過程 BEGIN SELECT count( * ) INTO TotalNum FROM dept_emp; END // DELIMITER ;-- 從新設定語句結束分隔符,每次查詢結束後都要將分隔符還原爲;
建立帶有多個輸出變量的存儲過程 blog
DELIMITER // -- 設定語句結束分隔符 DROP PROCEDURE IF EXISTS GetSalary; -- 若是該存儲過程已經存在,則刪除 CREATE PROCEDURE GetSalary ( OUT salaryhigh INT, OUT salarylow INT, OUT salaryavg INT ) -- 建立不含有輸入輸出變量的存儲過程 BEGIN SELECT Max( salary ) INTO salaryhigh FROM salaries; SELECT Min( salary ) INTO salarylow FROM salaries; SELECT Avg( salary ) INTO salaryavg FROM salaries; END // DELIMITER; -- 從新設定語句結束分隔符,每次查詢結束後都要將分隔符還原爲;
建立帶有輸入輸出變量的存儲過程ast
DELIMITER // -- 設定語句結束分隔符 DROP PROCEDURE IF EXISTS GetNumEachDept; -- 若是該存儲過程已經存在,則刪除 CREATE PROCEDURE GetNumEachDept ( IN dept CHAR(10), OUT NumDept INT ) -- 建立帶有輸入輸出變量的存儲過程 BEGIN SELECT count( * ) INTO NumDept FROM dept_emp WHERE dept_no = dept; END// DELIMITER; -- 從新設定語句結束分隔符,每次查詢結束後都要將分隔符還原爲;
調用存儲過程class
CALL GetEmployees(); CALL GetSalary (@SalaryHigh, @SalaryLow, @SalaryAvg); SELECT @Salaryhigh, @Salarylow, @Salaryavg; CALL GetNumEachDept ( 'd004', @NumDept ); SELECT @NumDept; CALL GetTotalNum(@TotalNum); SELECT @TotalNum;
運行結果:變量
emp_no birth_date first_name last_name gender hire_date 10001 1953-09-02 Georgi Facello M 1986-06-26 10002 1964-06-02 Bezalel Simmel F 1985-11-21 10003 1959-12-03 Parto Bamford M 1986-08-28 @Salaryhigh @Salarylow @Salaryavg 158220 38623 63811 @NumDept 73485 @TotalNum 331603
CALL GetEmployees() > OK > 時間: 0s CALL GetSalary (@SalaryHigh, @SalaryLow, @SalaryAvg) > OK > 時間: 2.467s SELECT @Salaryhigh, @Salarylow, @Salaryavg > OK > 時間: 0s CALL GetNumEachDept ( 'd004', @NumDept ) > OK > 時間: 0.03s SELECT @NumDept > OK > 時間: 0s CALL GetTotalNum(@TotalNum) > OK > 時間: 0.07s SELECT @TotalNum > OK > 時間: 0s