zoukankan      html  css  js  c++  java
  • MySQL 存储过程传参之in, out, inout 参数用法

    存储过程传参:存储过程的括号里,可以声明参数。 语法是 create procedure p([in/out/inout] 参数名  参数类型 ..)
    in :给参数传入值,定义的参数就得到了值
    out:模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程(在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值)
    inout:调用者还可以通过 inout 参数传递值给存储过程,也可以从存储过程内部传值给调用者

    如果仅仅想把数据传给 MySQL 存储过程,那就使用“in” 类型参数;
    如果仅仅从 MySQL 存储过程返回值,那就使用“out” 类型参数;
    如果需要把数据传给 MySQL 存储过程,还要经过一些计算后再传回给我们,此时,要使用“inout” 类型参数。 
    在CODE上查看代码片派生到我的代码片
    1. DELIMITER $$  
    2. CREATE PROCEDURE p1(IN num INT)  
    3. BEGIN  
    4.   DECLARE i INT DEFAULT 0;  
    5.   DECLARE total INT DEFAULT 0;  
    6.   WHILE i<=num DO  
    7.     SET total := i + total;  
    8.     SET i := i+1;  
    9.   END WHILE;  
    10.   SELECT total;  
    11. END$$  


    存储过程传参 out
    1. CREATE PROCEDURE p2(OUT num INT)  
    2. BEGIN  
    3.  SELECT num AS num_1;  
    4.  IF (num IS NOT NULL) THEN  
    5.  SET num = num + 1;  
    6.  SELECT num AS num_2;  
    7.  ELSE  
    8.  SELECT 1 INTO num;  
    9.  END IF;  
    10.  SELECT num AS num_3;  
    11. END$$  
    12. SET @num = 10$$  
    13. CALL p2(@num)$$  
    14. SELECT @num AS num_out$$  


    在CODE上查看代码片派生到我的代码片
    1. CREATE PROCEDURE p3(INOUT age INT)  
    2. BEGIN  
    3.   SET age := age + 20;  
    4. END$$  
    5. set @currage =18$$  
    6. call p3(@currage)$$  
    7. select @currage$$  

  • 相关阅读:
    XSS练习小游戏和答案参考
    nxlog以syslog方式发送日志
    Hydra—密码爆破神器
    syslog服务器配置笔记
    信息安全工具汇总整理
    nmap使用指南
    Cleaner, more elegant, and harder to recognize (msdn blog)
    Golang 中的坑 一
    Concurrency Is Not Parallelism (Rob pike)
    golang sql database drivers
  • 原文地址:https://www.cnblogs.com/kabi/p/5903491.html
Copyright © 2011-2022 走看看