mysql数据库存储过程

-- 存储过程


-- 执行带有逻辑的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;

-- (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;

-- (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;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值