• 中文
    • 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.1k
    • 小朱快跑梁兴健

      请登录之后再进行评论

      登录

      赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: