-- 存儲過程sql
-- 執行帶有邏輯的sql語句
-- 特色:存儲過程保存在數據庫服務器
-- 基本語法
-- 以$符號開始和結束
DELIMITER $
CREATE PROCEDURE pro_test()
BEGIN
SELECT * FROM student WHERE id = 1;
SELECT * FROM student WHERE id = 3;
END $
-- 調用存儲過程
CALL pro_test();
-- 刪除存儲過程
DROP PROCEDURE pro_test;數據庫
-- (1)帶有輸入參數的存儲過程
DELIMITER $
CREATE PROCEDURE pro_test1(IN sid INT)
BEGIN
SELECT * FROM student WHERE id=sid;
END $
-- 定義會話變量
SET @sid = 2;
-- 調用存儲過程
CALL pro_test1(@sid);服務器
-- (2)帶有輸出參數的存儲過程
DELIMITER $
CREATE PROCEDURE pro_test2(OUT str VARCHAR(20))
BEGIN
-- 修改str的值
SET str = '輸出參數';
END $
-- 定義會話變量
-- set @s='';
-- 調用存儲過程
CALL pro_test2(@s);
-- 查詢會話變量的值
SELECT @s;test
-- (3)帶有輸入輸出參數的存儲過程
DELIMITER $
CREATE PROCEDURE pro_test3(INOUT m INT)
BEGIN
-- 查看變量的值
SELECT m;
-- 修改變量的值
SET m = 999;
END $
-- 定義會話變量
SET @money = 100;
-- 調用存儲過程
CALL pro_test3(@money);
-- 查詢變量的值
SELECT @money;變量
-- (4)將查詢的結果賦值給輸出參數
DELIMITER $
CREATE PROCEDURE pro_test4(IN sid INT,OUT sname VARCHAR(10))
BEGIN
SELECT NAME INTO sname FROM student WHERE id=sid;
END $
-- 定義會話變量
SET @sid = 4;
-- 調用存儲過程
CALL pro_test4(@sid,@sname);
-- 查詢會話變量的值
SELECT @sname;sql語句
-- (5)帶有條件判斷的存儲過程
-- 需求:編寫一個存儲過程,當n=1,輸出'星期一',
-- 當n=2,輸出'星期二'
-- 當n=3,輸出'星期三',其餘狀況輸出'其餘狀況'
DELIMITER $
CREATE PROCEDURE pro_test5(IN n INT,OUT str VARCHAR(20))
BEGIN
IF n=1 THEN
SET str = '星期一';
ELSEIF n=2 THEN
SET str = '星期二';
ELSEIF n=3 THEN
SET str = '星期三';
ELSE
SET str = '其餘狀況';
END IF;
END $語法
-- 定義會話變量
SET @n = 7;
-- 調用存儲過程
CALL pro_test5(@n,@str);
-- 查詢變量的值
SELECT @str;數據