MySQL存儲過程中的IN倘核,OUT,INOUT類型

MySQL存儲過程中有IN即彪,OUT紧唱,INOUT類型

-----------------------------------

## IN ? IN參數(shù)只用來向過程傳遞信息,為默認值隶校。

## MySQL存儲過程"in"參數(shù):跟C語言的函數(shù)參數(shù)的值傳遞類似漏益,MySQL存儲過程內(nèi)部可能會修改此參數(shù),

## 但in類型參數(shù)的修改對調(diào)用者(caller)來說是不可見的(not visible)

mysql>use test;

mysql> drop procedureifexists pr_param_in;

QueryOK,0rows affected,1warning (0.01sec)

mysql> delimiter //

mysql> create procedure pr_param_in(inid int)

? ? -> begin

? ? ->if(id is not null) then

? ? ->? ? set id=id+1;

? ? -> endif;

? ? -> select idasid_inner;

? ? -> end;

? ? -> //

QueryOK,0rows affected (0.03sec)

mysql> delimiter ;

mysql> set @id=10;

QueryOK,0rows affected (0.00sec)

mysql> call pr_param_in(@id);?

+----------+

| id_inner |?

+----------+

|11|?

+----------+

1rowinset (0.00sec)QueryOK,0rows affected (0.00sec)

mysql> select @id as id_out;

?+--------+

| id_out |?

+--------+

|10|?

+--------+

1rowinset (0.00sec)

## ?可以看到用戶變量@id傳入值為10深胳,執(zhí)行存儲過程后绰疤,在過程內(nèi)部值為:11(id_inner),

## ?但外部變量值依舊為:10(id_out)

==================================================================================

## OUT ? OUT參數(shù)只用來從過程傳回信息。

## MySQL存儲過程"out"參數(shù):從存儲過程內(nèi)部傳值給調(diào)用者稠屠。

## 在存儲過程內(nèi)部峦睡,該參數(shù)初始值為 null,無論調(diào)用者是否給存儲過程參數(shù)設置值权埠。

mysql> drop procedureifexists pr_param_out;

QueryOK,0rows affected,1warning (0.01sec)

mysql> delimiter //

mysql> create procedure pr_param_out(out id int)

? ? -> begin

? ? -> select idasid_inner_1;?

?? ->if(id is not null) then

? ?->? ? set id=id+1;

? ? ->? ? select idasid_inner_2;?

?? ->else->? ? select1into id;

? ? -> endif;

? ? -> select idasid_inner_3;

? ? -> end;

? ? -> //

QueryOK,0rows affected (0.01sec)

mysql> delimiter ;

mysql> set @id=10;

QueryOK,0rows affected (0.00sec)

mysql> call pr_param_out(@id);?

+------------+

| id_inner_1 |?

+------------+

|NULL|?

+------------+

1rowinset (0.01sec)?

+------------+

| id_inner_3 |?

+------------+

|1|

?+------------+

1rowinset (0.01sec)

QueryOK,0rows affected (0.01sec)

mysql> select @idasid_out;?

+--------+

| id_out |

+--------+

|1|?

+--------+

1rowinset (0.00sec)

## 可以看出榨了,雖然我們設置了用戶定義變量@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 procedureifexists pr_param_inout;

QueryOK,0rows affected,1warning (0.01sec)

mysql> delimiter //

mysql> create procedure pr_param_inout(inout id int)

? ? -> begin

? ? -> select idasid_inner_1;

? ? ->if(id is not null) then

? ? ->? ? set id=id+1;

? ? ->? ? select idasid_inner_2;

? ? ->else

? ? ->? ? select 1 into id;

? ? -> endif;

? ? -> select id as id_inner_3;

? ? -> end;

? ? -> //

QueryOK,0rows affected (0.01sec)

mysql> delimiter ;

mysql> set @id=10;

QueryOK,0rows affected (0.00sec)

mysql> call pr_param_inout(@id);

?+------------+

| id_inner_1 |?

+------------+

|10|?

+------------+

1rowinset (0.00sec)?

+------------+

| id_inner_2 |?

+------------+

|11|?

+------------+

1rowinset (0.00sec)?

+------------+

| id_inner_3 |?

+------------+

|11|?

+------------+

1rowinset (0.01sec)QueryOK,0rows affected (0.01sec)

mysql> select @idasid_out;?

+--------+

| id_out |?

+--------+

|11|?

+--------+

1rowinset (0.00sec)

## 從結(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ù)。

原文地址:http://blog.sina.com.cn/s/blog_6238358c0100n7ss.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末货葬,一起剝皮案震驚了整個濱河市采幌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宝惰,老刑警劉巖植榕,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件再沧,死亡現(xiàn)場離奇詭異尼夺,居然都是意外死亡,警方通過查閱死者的電腦和手機炒瘸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門淤堵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人顷扩,你說我怎么就攤上這事拐邪。” “怎么了隘截?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵扎阶,是天一觀的道長。 經(jīng)常有香客問我婶芭,道長东臀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任犀农,我火速辦了婚禮惰赋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呵哨。我一直安慰自己赁濒,他們只是感情好轨奄,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拒炎,像睡著了一般挪拟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上击你,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天舞丛,我揣著相機與錄音,去河邊找鬼果漾。 笑死球切,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的绒障。 我是一名探鬼主播吨凑,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼户辱!你這毒婦竟也來了鸵钝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤庐镐,失蹤者是張志新(化名)和其女友劉穎恩商,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體必逆,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡怠堪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了名眉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粟矿。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖损拢,靈堂內(nèi)的尸體忽然破棺而出陌粹,到底是詐尸還是另有隱情,我是刑警寧澤福压,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布掏秩,位于F島的核電站,受9級特大地震影響荆姆,放射性物質(zhì)發(fā)生泄漏蒙幻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一胞枕、第九天 我趴在偏房一處隱蔽的房頂上張望杆煞。 院中可真熱鬧,春花似錦、人聲如沸决乎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽构诚。三九已至蚌斩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間范嘱,已是汗流浹背送膳。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丑蛤,地道東北人叠聋。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像受裹,于是被迫代替她去往敵國和親碌补。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法棉饶,類相關(guān)的語法厦章,內(nèi)部類的語法,繼承相關(guān)的語法照藻,異常的語法袜啃,線程的語...
    子非魚_t_閱讀 31,663評論 18 399
  • 任務需求:定時執(zhí)行的任務,調(diào)用存儲過程幸缕,進行數(shù)據(jù)遷移群发。 存儲過程相關(guān)總結(jié):(存儲過程的創(chuàng)建 不能伴隨有if exi...
    時待吾閱讀 3,089評論 0 4
  • 轉(zhuǎn)載自這里 存儲過程簡介 我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時候需要要先編譯,然后執(zhí)行冀值,而存儲過程(Sto...
    杜七閱讀 2,403評論 4 27
  • 原文鏈接 MySQL存儲過程詳解 1.存儲過程簡介 我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時候需要要先編譯也物,然...
    亞斯咪妮閱讀 2,673評論 1 30
  • article 一個故事告訴你比特幣的原理及運作機制 The Proof-of-Work Concept 比特幣白...
    dyun閱讀 465評論 0 2