最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql數(shù)據(jù)存儲(chǔ)過程參數(shù)實(shí)例詳解

 更新時(shí)間:2017年10月18日 15:05:58   作者:nonels  
這篇文章主要介紹了mysql數(shù)據(jù)存儲(chǔ)過程參數(shù)實(shí)例詳解,小編覺得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。

MySQL 存儲(chǔ)過程參數(shù)有三種類型:in、out、inout。它們各有什么作用和特點(diǎn)呢?

一、MySQL 存儲(chǔ)過程參數(shù)(in)

MySQL 存儲(chǔ)過程 “in” 參數(shù):跟 C 語言的函數(shù)參數(shù)的值傳遞類似, MySQL 存儲(chǔ)過程內(nèi)部可能會(huì)修改此參數(shù),但對(duì) in 類型參數(shù)的修改,對(duì)調(diào)用者(caller)來說是不可見的(not visible)。

drop procedure if exists pr_param_in;
create procedure pr_param_in
(
  in id int -- in 類型的 MySQL 存儲(chǔ)過程參數(shù)
)
begin
  if (id is not null) then
   set id = id + 1;
  end if;
  select id as id_inner;
end;
set @id = 10;
call pr_param_in(@id);
select @id as id_out;
mysql> call pr_param_in(@id);
+----------+
| id_inner |
+----------+
|    11 |
+----------+

mysql> select @id as id_out;
+--------+
| id_out |
+--------+
| 10   |
+--------+

可以看到:用戶變量 @id 傳入值為 10,執(zhí)行存儲(chǔ)過程后,在過程內(nèi)部值為:11(id_inner),但外部變量值依舊為:10(id_out)。

二、MySQL 存儲(chǔ)過程參數(shù)(out)

MySQL 存儲(chǔ)過程 “out” 參數(shù):從存儲(chǔ)過程內(nèi)部傳值給調(diào)用者。在存儲(chǔ)過程內(nèi)部,該參數(shù)初始值為 null,無論調(diào)用者是否給存儲(chǔ)過程參數(shù)設(shè)置值。

drop procedure if exists pr_param_out;
create procedure pr_param_out
(
  out id int
)
begin
  select id as id_inner_1; -- id 初始值為 null
  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;
set @id = 10;
call pr_param_out(@id);
select @id as id_out;
mysql> set @id = 10;
mysql>
mysql> call pr_param_out(@id);
+------------+
| id_inner_1 |
+------------+
|    NULL |
+------------+

+------------+
| id_inner_3 |
+------------+
|     1 |
+------------+

mysql> select @id as id_out;
+--------+
| id_out |
+--------+
| 1   |
+--------+

可以看出,雖然我們?cè)O(shè)置了用戶定義變量 @id 為 10,傳遞 @id 給存儲(chǔ)過程后,在存儲(chǔ)過程內(nèi)部,id 的初始值總是 null(id_inner_1)。最后 id 值(id_out = 1)傳回給調(diào)用者。

三、MySQL 存儲(chǔ)過程參數(shù)(inout)

MySQL 存儲(chǔ)過程 inout 參數(shù)跟 out 類似,都可以從存儲(chǔ)過程內(nèi)部傳值給調(diào)用者。不同的是:調(diào)用者還可以通過 inout 參數(shù)傳遞值給存儲(chǔ)過程。

drop procedure if exists pr_param_inout;
create procedure pr_param_inout
(
  inout id int
)
begin
  select id as id_inner_1; -- id 值為調(diào)用者傳進(jìn)來的值
  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;
set @id = 10;
call pr_param_inout(@id);
select @id as id_out;
mysql> set @id = 10;

mysql>
mysql> call pr_param_inout(@id);
+------------+
| id_inner_1 |
+------------+
|     10 |
+------------+

+------------+
| id_inner_2 |
+------------+
|     11 |
+------------+

+------------+
| id_inner_3 |
+------------+
|     11 |
+------------+
mysql>
mysql> select @id as id_out;
+--------+
| id_out |
+--------+
| 11   |
+--------+

從結(jié)果可以看出:我們把 @id(10),傳給存儲(chǔ)過程后,存儲(chǔ)過程最后又把計(jì)算結(jié)果值 11(id_inner_3)傳回給調(diào)用者。 MySQL 存儲(chǔ)過程 inout 參數(shù)的行為跟 C 語言函數(shù)中的引用傳值類似。

通過以上例子:如果僅僅想把數(shù)據(jù)傳給 MySQL 存儲(chǔ)過程,那就使用“in” 類型參數(shù);如果僅僅從 MySQL 存儲(chǔ)過程返回值,那就使用“out” 類型參數(shù);如果需要把數(shù)據(jù)傳給 MySQL 存儲(chǔ)過程,還要經(jīng)過一些計(jì)算后再傳回給我們,此時(shí),要使用“inout” 類型參數(shù)。

總結(jié)

以上就是本文關(guān)于mysql數(shù)據(jù)存儲(chǔ)過程參數(shù)實(shí)例詳解的全部內(nèi)容,希望對(duì)大家了解MySQL有所幫助。感興趣的朋友可以繼續(xù)參閱本站:解析MySQL中存儲(chǔ)時(shí)間日期類型的選擇問題、MySQL 聲明變量及存儲(chǔ)過程分析等,有什么問題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • MySQL 5.7及8.0版本數(shù)據(jù)庫的root密碼遺忘的解決方法

    MySQL 5.7及8.0版本數(shù)據(jù)庫的root密碼遺忘的解決方法

    這篇文章主要介紹了MySQL 5.7及8.0版本數(shù)據(jù)庫的root密碼遺忘的解決辦法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-12-12
  • MySQL中臨時(shí)表的基本創(chuàng)建與使用教程

    MySQL中臨時(shí)表的基本創(chuàng)建與使用教程

    這篇文章主要介紹了MySQL中臨時(shí)表的基本創(chuàng)建與使用教程,注意臨時(shí)表中數(shù)據(jù)的清空問題,需要的朋友可以參考下
    2015-12-12
  • mysql視圖原理與用法實(shí)例詳解

    mysql視圖原理與用法實(shí)例詳解

    這篇文章主要介紹了mysql視圖原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了mysql視圖的概念、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • MySQL筆記之索引的使用

    MySQL筆記之索引的使用

    索引是創(chuàng)建在表上的,對(duì)數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)其作用主要在于提高查詢的速度,降低數(shù)據(jù)庫系統(tǒng)的性能開銷
    2013-05-05
  • MySQL數(shù)據(jù)庫如何給表設(shè)置約束詳解

    MySQL數(shù)據(jù)庫如何給表設(shè)置約束詳解

    約束主要完成對(duì)數(shù)據(jù)的檢驗(yàn),保證數(shù)據(jù)庫數(shù)據(jù)的完整性;如果有相互依賴數(shù)據(jù),保證該數(shù)據(jù)不被刪除,本篇文章教你如何給表設(shè)置約束
    2022-03-03
  • 使用MySQL實(shí)現(xiàn)一個(gè)分布式鎖

    使用MySQL實(shí)現(xiàn)一個(gè)分布式鎖

    在分布式系統(tǒng)中,分布鎖是一個(gè)最基礎(chǔ)的工具類。這篇文章主要介紹了用MySQL實(shí)現(xiàn)一個(gè)分布式鎖,本文通過實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 使用mysql記錄從url返回的http GET請(qǐng)求數(shù)據(jù)操作

    使用mysql記錄從url返回的http GET請(qǐng)求數(shù)據(jù)操作

    這篇文章主要介紹了使用mysql記錄從url返回的http GET請(qǐng)求數(shù)據(jù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • MySql 5.7.17壓縮包免安裝的配置過程圖解

    MySql 5.7.17壓縮包免安裝的配置過程圖解

    這篇文章主要介紹了MySql 5.7.17壓縮包免安裝的配置過程圖解,本文圖文并茂給大家介紹的非常詳細(xì),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • Mysql逗號(hào)拼接字符串的關(guān)聯(lián)查詢以及統(tǒng)計(jì)問題

    Mysql逗號(hào)拼接字符串的關(guān)聯(lián)查詢以及統(tǒng)計(jì)問題

    有時(shí)為了數(shù)據(jù)庫簡潔,存放數(shù)據(jù)的時(shí)候,某一字段采用逗號(hào)隔開的形式進(jìn)行存儲(chǔ),下面這篇文章主要給大家介紹了關(guān)于Mysql逗號(hào)拼接字符串的關(guān)聯(lián)查詢以及統(tǒng)計(jì)問題的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 從mysql讀寫分離著手提升服務(wù)器性能

    從mysql讀寫分離著手提升服務(wù)器性能

    這篇文章主要為大家介紹了從mysql讀寫分離著手提升服務(wù)器性能實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

抚远县| 承德县| 泰安市| 雅安市| 涟源市| 钦州市| 丹阳市| 赤水市| 宝山区| 内黄县| 安宁市| 平谷区| 上栗县| 鱼台县| 磴口县| 浏阳市| 金沙县| 岗巴县| 彝良县| 八宿县| 株洲市| 东乡| 平陆县| 正蓝旗| 筠连县| 莫力| 凤庆县| 常熟市| 邛崃市| 阜平县| 吉木萨尔县| 平罗县| 桑日县| 额济纳旗| 迁西县| 勐海县| 黔西| 萨嘎县| 金平| 甘南县| 沙田区|