六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

怎么理解MySQL中的IN,OUT,INOUT分類

[摘要][sql] viewplain copyMySQL存儲過程中有IN,OUT,INOUT類型 ----------------------------------- ## IN IN參數(shù)只用來...

[sql] view plain copy


  1. MySQL存儲過程中有IN,OUT,INOUT類型  
    -----------------------------------  
    ## IN   IN參數(shù)只用來向過程傳遞信息,為默認(rèn)值。  
    ## MySQL存儲過程"in"參數(shù):跟C語言的函數(shù)參數(shù)的值傳遞類似,MySQL存儲過程內(nèi)部可能會修改此參數(shù),  
    ## 但in類型參數(shù)的修改對調(diào)用者(caller)來說是不可見的(not visible)  
    mysql>use test;  
    mysql> drop procedure if exists pr_param_in;  
    Query OK, 0 rows affected, 1 warning (0.01 sec)  
    mysql> delimiter //  
    mysql> create procedure pr_param_in(in id int)  
        -> begin  
        -> if (id is not null) then  
        ->     set id=id+1;  
        -> end if;  
        -> select id as id_inner;  
        -> end;  
        -> //  
    Query OK, 0 rows affected (0.03 sec)  
    mysql> delimiter ;  
    mysql> set @id=10;  
    Query OK, 0 rows affected (0.00 sec)  
    mysql> call pr_param_in(@id);  
    +----------+  
      id_inner    
    +----------+  
            11    
    +----------+  
    1 row in set (0.00 sec)  
    Query OK, 0 rows affected (0.00 sec)  
    mysql> select @id as id_out;  
    +--------+  
      id_out    
    +--------+  
          10    
    +--------+  
    1 row in set (0.00 sec)  
    ##  可以看到用戶變量@id傳入值為10,執(zhí)行存儲過程后,在過程內(nèi)部值為:11(id_inner),  
    ##  但外部變量值依舊為:10(id_out)

[sql] view plain copy


  1. <pre name="code" class="sql">==================================================================================  
    ## OUT   OUT參數(shù)只用來從過程傳回信息。  
    ## MySQL存儲過程"out"參數(shù):從存儲過程內(nèi)部傳值給調(diào)用者。  
    ## 在存儲過程內(nèi)部,該參數(shù)初始值為 null,無論調(diào)用者是否給存儲過程參數(shù)設(shè)置值。  
    mysql> drop procedure if exists pr_param_out;  
    Query OK, 0 rows affected, 1 warning (0.01 sec)  
    mysql> delimiter //  
    mysql> create procedure pr_param_out(out id int)  
        -> begin  
        -> select id as id_inner_1;  
        -> if (id is not null) then  
        ->     set id=id+1;  
        ->     select id as id_inner_2;  
        -> else  
        ->     select 1 into id;  
        -> end if;  
        -> select id as id_inner_3;  
        -> end;  
        -> //  
    Query OK, 0 rows affected (0.01 sec)  
    mysql> delimiter ;  
    mysql> set @id=10;  
    Query OK, 0 rows affected (0.00 sec)  
    mysql> call pr_param_out(@id);  
    +------------+  
      id_inner_1    
    +------------+  
            NULL    
    +------------+  
    1 row in set (0.01 sec)  
    +------------+  
      id_inner_3    
    +------------+  
               1    
    +------------+  
    1 row in set (0.01 sec)  
    Query OK, 0 rows affected (0.01 sec)  
    mysql> select @id as id_out;  
    +--------+  
      id_out    
    +--------+  
           1    
    +--------+  
    1 row in set (0.00 sec)  
    ## 可以看出,雖然我們設(shè)置了用戶定義變量@id為10,傳遞@id給存儲過程后,在存儲過程內(nèi)部,  
    ## id的初始值總是 null(id_inner_1)。最后id值(id_out=1)傳回給調(diào)用者。  
    ===================================================================================  
    ## INOUT INOUT參數(shù)可以向過程傳遞信息,如果值改變,則可再從過程外調(diào)用。  
    ## MySQL存儲過程"inout"參數(shù)跟out類似,都可以從存儲過程內(nèi)部傳值給調(diào)用者。  
    ## 不同的是:調(diào)用者還可以通過inout參數(shù)傳遞至給存儲過程。  
    mysql> drop procedure if exists pr_param_inout;  
    Query OK, 0 rows affected, 1 warning (0.01 sec)  
    mysql> delimiter //  
    mysql> create procedure pr_param_inout(inout id int)  
        -> begin  
        -> select id as id_inner_1;  
        -> if (id is not null) then  
        ->     set id=id+1;  
        ->     select id as id_inner_2;  
        -> else  
        ->     select 1 into id;  
        -> end if;  
        -> select id as id_inner_3;  
        -> end;  
        -> //  
    Query OK, 0 rows affected (0.01 sec)  
    mysql> delimiter ;  
    mysql> set @id=10;  
    Query OK, 0 rows affected (0.00 sec)  
    mysql> call pr_param_inout(@id);  
    +------------+  
      id_inner_1    
    +------------+  
              10    
    +------------+  
    1 row in set (0.00 sec)  
    +------------+  
      id_inner_2    
    +------------+  
              11    
    +------------+  
    1 row in set (0.00 sec)  
    +------------+  
      id_inner_3    
    +------------+  
              11    
    +------------+  
    1 row in set (0.01 sec)  
    Query OK, 0 rows affected (0.01 sec)  
    mysql> select @id as id_out;  
    +--------+  
      id_out    
    +--------+  
          11    
    +--------+  
    1 row in set (0.00 sec)  
    ## 從結(jié)果可以看出:我們把 @id(10)傳給存儲過程后,存儲過程最后又把計算結(jié)果值11(id_inner_3)  
    ## 傳回給調(diào)用者。MySQL存儲過程inout參數(shù)的行為跟C語言函數(shù)中的引用傳值類似。  
    =========================================================================================  
    通過以上例子:  
    1)  如果僅僅想把數(shù)據(jù)傳給MySQL存儲過程,那就用in類型參數(shù);  
    2)  如果僅僅從MySQL存儲過程返回值,那就用out類型參數(shù);  
    3)  如果需要把數(shù)據(jù)傳給MySQL存儲過程經(jīng)過計算再傳回給我們,那就用inout類型參數(shù)。

以上就是如何理解MySQL中的IN,OUT,INOUT類型的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 青青青国产在线观看免费网站 | 日本高清视频一区 | 天堂资源bt在线官网 | 欧美视频黄色 | 五月婷婷丁香综合网 | 天堂资源bt在线官网 | 日韩一级免费毛片 | 亚洲六月丁香色婷婷综合久久 | 日本免费一区二区三区看片 | 亚洲国产一区二区在线 | 亚洲第一网站免费视频 | 青青草久草 | 欧美永久免费 | 人人狠狠综合久久亚洲88 | 色综合欧美色综合七久久 | 日日拍拍| 日韩不卡手机视频在线观看 | 欧美亚洲春色系列 | 色综合影视 | 日本成a人片在线观看网址 日本草草影院 | 十八毛片 | 手机在线看片国产日韩生活片 | 伊人成人在线 | 怡春院日本一区二区久久 | 性荡视频在线播放视频 | 亚洲精品在线观看91 | 色婷婷丁香六月 | 性感美女视频黄.免费网站 性感保姆正片 | 日韩免费在线观看 | 日本免费观看视频 | 四虎影视免费永久在线观看 | 欧美视频自拍偷拍 | 日本激情在线观看 | 青草热视频 | 天天好b | 日韩黄色录像 | 最新精品亚洲成a人在线观看 | 亚洲国产系列久久精品99人人 | 思思久久99 | 爽爽影院免费线看 | 欧美专区综合 |