mysql數據庫存儲過程

-- 存儲過程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;數據