• 中文
    • English
  • 注册
  • 查看作者
  • 8-6:MySQL 创建带有IN和OUT类型参数的存储过程

    接下来创建一个删除ID无固定的记录,并且返回剩余的记录数,则需要两个语句,一个是DELETE语句,一个是获取剩余记录总数的语句,并且这个语句的类型因为需要返回,则需要设置为OUT

    mysql> CREATE PROCEDURE ruarun(IN p_id INT UNSIGNED, OUT userNums INT UNSIGNED)
        -> BEGIN
        -> DELETE FROM users WHERE id = p_id;
        -> SELECT COUNT(id) FROM users INTO userNums;
        -> END
        -> //
    Query OK, 0 rows affected (0.00 sec)

    INTO的作用是将SELECT表达式的结果放入userNums这个变量中,测试一下创建的存储过程:

    mysql> SELECT
        -> COUNT(id) FROM users;
        -> //
    +-----------+
    | count(id) |
    +-----------+
    |        25 |
    +-----------+
    1 row in set (0.00 sec)
    
    mysql> CALL ruarun(44,@nums);
        -> //
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT @nums;
        -> //
    +-------+
    | @nums |
    +-------+
    |    24 |
    +-------+
    1 row in set (0.00 sec)

    使用SElECT语句,或者SELECT…INTO语句 以及SET = @变量名 声明的变量是用户变量,用户变量跟MySQL客户端绑定,只对当前用户所使用的客户端生效

    DECLARE称之为局部变量,声明的时候必须放在第一行只能作用于BEGIN~END语句块之间,运行完BEGIN~END语句,局部变量消失

  • 0
  • 0
  • 0
  • 7.3k
  • 小朱快跑梁兴健

    请登录之后再进行评论

    登录
    单栏布局 侧栏位置: