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” 类型參数。 
    MySQL 存储过程參数假设不显式指定"in"、"out"、"inout",则默觉得"in"。

    实例一:存储过程传參 in
    DELIMITER $$
    CREATE PROCEDURE p1(IN num INT)
    BEGIN
      DECLARE i INT DEFAULT 0;
      DECLARE total INT DEFAULT 0;
      WHILE i<=num DO
        SET total := i + total;
        SET i := i+1;
      END WHILE;
      SELECT total;
    END$$


    实例二:存储过程传參 out
    CREATE PROCEDURE p2(OUT num INT)
    BEGIN
     SELECT num AS num_1;
     IF (num IS NOT NULL) THEN
     SET num = num + 1;
     SELECT num AS num_2;
     ELSE
     SELECT 1 INTO num;
     END IF;
     SELECT num AS num_3;
    END$$
    SET @num = 10$$
    CALL p2(@num)$$
    SELECT @num AS num_out$$


    实例三:存储过程传參 inout
    CREATE PROCEDURE p3(INOUT age INT)
    BEGIN
      SET age := age + 20;
    END$$
    set @currage =18$$
    call p3(@currage)$$
    select @currage$$


  • 相关阅读:
    使用JS获取选中的复选框的值
    AngularJS实现tab选项卡
    Java递归获取树父节点下的所有树子节点
    SQL中的case when then
    用sql语句(alter)追加新字段、外键、删除列
    javascript把number转化成百分比
    使用group by来去除重复记录
    JavaScript数组
    基本排序方法
    (转)如何学好C语言
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7118075.html
Copyright © 2011-2022 走看看