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

MySQL存儲過程的深入講解(in、out、inout)

 更新時(shí)間:2020年11月06日 10:50:22   作者:zzzf98  
這篇文章主要給大家介紹了關(guān)于MySQL存儲過程(in、out、inout)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、簡介

從 5.0 版本才開始支持,是一組為了完成特定功能的SQL語句集合(封裝),比傳統(tǒng)SQL速度更快、執(zhí)行效率更高。

存儲過程的優(yōu)點(diǎn)

1、執(zhí)行一次后,會(huì)將生成的二進(jìn)制代碼駐留緩沖區(qū)(便于下次執(zhí)行),提高執(zhí)行效率

2、SQL語句加上控制語句的集合,靈活性高

3、在服務(wù)器端存儲,客戶端調(diào)用時(shí),降低網(wǎng)絡(luò)負(fù)載

4、可多次重復(fù)被調(diào)用,可隨時(shí)修改,不影響客戶端調(diào)用

5、 可完成所有的數(shù)據(jù)庫操作,也可控制數(shù)據(jù)庫的信息訪問權(quán)限

為什么要用存儲過程?

1.減輕網(wǎng)絡(luò)負(fù)載;2.增加安全性

二、創(chuàng)建存儲過程

2.1 創(chuàng)建基本過程

使用create procedure語句創(chuàng)建存儲過程

存儲過程的主體部分,被稱為過程體;以begin開始,以end$$結(jié)束

#聲明語句結(jié)束符,可以自定義:
delimiter $$
#聲明存儲過程
create procedure 存儲過程名(in 參數(shù)名 參數(shù)類型)
begin
#定義變量
declare 變量名 變量類型
#變量賦值
set 變量名 = 值
 sql 語句1;
 sql 語句2;
 ...
end$$
#恢復(fù)為原來的語句結(jié)束符
delimiter ;(有空格)

實(shí)例:

mysql> delimiter $$
mysql> create procedure text()
 -> begin
 -> select * from stu.a_player;
 -> end $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

調(diào)用存儲過程

call 存儲過程名(實(shí)際參數(shù));
mysql> call text;
+----+----------+-------+
| id | name  | score |
+----+----------+-------+
| 1 | zhangsan | 88 |
| 2 | lisi  | 89 |
| 3 | wangwu | 67 |
| 4 | zhaoliu | 90 |
| 5 | xuli  | 80 |
| 6 | keke  | 75 |
+----+----------+-------+
6 rows in set (0.00 sec)

刪除存儲過程

mysql> drop procedure text;

2.2 存儲過程的參數(shù)

MySQL存儲過程的參數(shù)用在存儲過程的定義,共有三種參數(shù)類型,IN,OUT,INOUT,形式如:

CREATEPROCEDURE 存儲過程名([[IN |OUT |INOUT ] 參數(shù)名 數(shù)據(jù)類形...])

IN 輸入?yún)?shù):表示調(diào)用者向過程傳入值(傳入值可以是字面量或變量)

OUT 輸出參數(shù):表示過程向調(diào)用者傳出值(可以返回多個(gè)值)(傳出值只能是變量)

INOUT 輸入輸出參數(shù):既表示調(diào)用者向過程傳入值,又表示過程向調(diào)用者傳出值(值只能是變量)

傳遞參數(shù)實(shí)例:

IN

mysql> create procedure test1(in in_id int(2))
 -> begin
 -> select * from stu.a_player where id=in_id;
 -> end $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

#將4傳遞給in_id變量,執(zhí)行事務(wù)
mysql> call test1(4); 
+----+---------+-------+
| id | name | score |
+----+---------+-------+
| 4 | zhaoliu | 90 |
+----+---------+-------+
1 row in set (0.00 sec)

#將6傳遞給in_id變量,執(zhí)行事務(wù)
mysql> call test1(6);
+----+------+-------+
| id | name | score |
+----+------+-------+
| 6 | keke | 75 |
+----+------+-------+
1 row in set (0.00 sec)

OUT

mysql> delimiter $$
mysql> create procedure test2(out aa int) 
 -> begin
 -> select aa;
 -> set aa=2;
 -> select aa;
 -> end $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
#將@aa變量傳遞給test2 事務(wù)
mysql> call test2(@aa);
+------+
| aa |
+------+
| NULL |
+------+
#out向調(diào)用者輸出參數(shù),不接收輸入的參數(shù),所以aa為null
1 row in set (0.00 sec)
+------+
| aa |
+------+
| 2 |
+------+
事務(wù)將aa變量設(shè)置為2(設(shè)置的是全局),則可進(jìn)行輸出
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> select @aa;
+------+
| @aa |
+------+
| 2 |
+------+
1 row in set (0.00 sec)
#事務(wù)外查詢變量,已經(jīng)被修改

IN 、OUT、 INOUT 對比

mysql> delimiter //
mysql> create procedure test3(in num1 int,out num2 int,inout num3 int)
 -> begin
 -> select num1,num2,num3;
 -> set num1=10,num2=20,num3=30;
 -> select num1,num2,num3;
 -> end //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call test3(@num1,@num2,@num3);
+------+------+------+
| num1 | num2 | num3 |
+------+------+------+
| 1 | NULL | 3 |
+------+------+------+
1 row in set (0.00 sec)
+------+------+------+
| num1 | num2 | num3 |
+------+------+------+
| 10 | 20 | 30 |
+------+------+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

in和inout參數(shù)會(huì)將全局變量的值傳入存儲過程中,而out參數(shù)不會(huì)將全局變量的值傳入存儲過程中。在存儲過程使用中,參數(shù)值in,out,inout都會(huì)發(fā)生改變。

mysql> select @num1,@num2,@num3;
+-------+-------+-------+
| @num1 | @num2 | @num3 |
+-------+-------+-------+
|  1 | 20 | 30 |
+-------+-------+-------+
1 row in set (0.00 sec)

調(diào)用完存儲過程后,發(fā)現(xiàn)in參數(shù)不會(huì)對全局變量的值引起變化,而out和inout參數(shù)調(diào)用完存儲過程后,會(huì)對全局變量的值產(chǎn)生變化,會(huì)將存儲過程引用后的值賦值給全局變量。

in參數(shù)賦值類型可以是變量還有定值,而out和inout參數(shù)賦值類型必須為變量。

總結(jié)

到此這篇關(guān)于MySQL存儲過程(in、out、inout)的文章就介紹到這了,更多相關(guān)MySQL存儲過程(in、out、inout)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 實(shí)現(xiàn)添加時(shí)間自動(dòng)添加更新時(shí)間自動(dòng)更新操作

    mysql 實(shí)現(xiàn)添加時(shí)間自動(dòng)添加更新時(shí)間自動(dòng)更新操作

    這篇文章主要介紹了mysql 實(shí)現(xiàn)添加時(shí)間自動(dòng)添加更新時(shí)間自動(dòng)更新操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • MySQL timestamp自動(dòng)更新時(shí)間分享

    MySQL timestamp自動(dòng)更新時(shí)間分享

    在mysql中timestamp數(shù)據(jù)類型是一個(gè)比較特殊的數(shù)據(jù)類型,他可以自動(dòng)在你不使用程序更新情況下只要你更新了記錄timestamp會(huì)自動(dòng)更新時(shí)間
    2013-06-06
  • MySQL 之壓力測試工具的使用方法

    MySQL 之壓力測試工具的使用方法

    這篇文章主要介紹了MySQL 之壓力測試工具的使用方法,mysqlslap是mysql自帶的基準(zhǔn)測試工具,該工具查詢數(shù)據(jù),語法簡單,靈活容易使用,感興趣的可以了解一下
    2020-05-05
  • SQL中MIN和MAX及常見函數(shù)教程示例

    SQL中MIN和MAX及常見函數(shù)教程示例

    這篇文章主要為大家介紹了SQL中MIN和MAX及常見函數(shù)教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • MySQL分表策略與實(shí)踐小結(jié)

    MySQL分表策略與實(shí)踐小結(jié)

    MySQL分表是將原始表中的數(shù)據(jù)按照一定規(guī)則分散到多個(gè)表中,以減輕單表數(shù)據(jù)量過大的壓力,本文主要介紹了MySQL分表策略與實(shí)踐小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Mysql解決數(shù)據(jù)庫N+1查詢問題

    Mysql解決數(shù)據(jù)庫N+1查詢問題

    在本篇文章里小編給大家分享了關(guān)于Mysql解決數(shù)據(jù)庫N+1查詢問題的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們參考下。
    2019-07-07
  • MySQL 的CASE WHEN 語句使用說明

    MySQL 的CASE WHEN 語句使用說明

    本文介紹下,在mysql數(shù)據(jù)庫中,有關(guān)case when語句的用法,介紹了case when語句的基礎(chǔ)知識,并提供了相關(guān)實(shí)例,供大家學(xué)習(xí)參考,有需要的朋友不要錯(cuò)過
    2011-10-10
  • 使用mysql中遇到的幾個(gè)問題

    使用mysql中遇到的幾個(gè)問題

    首先mysql不是可視化的,可以通過命令行進(jìn)行操作,包括創(chuàng)建數(shù)據(jù)庫、表、添加數(shù)據(jù)等等。那豈不是很不方便了嗎?
    2009-07-07
  • MySQL獲得當(dāng)前日期時(shí)間函數(shù)示例詳解

    MySQL獲得當(dāng)前日期時(shí)間函數(shù)示例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL獲得當(dāng)前日期時(shí)間函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 你真的會(huì)用Mysql的explain嗎

    你真的會(huì)用Mysql的explain嗎

    explain顯示了mysql如何使用索引來處理select語句以及連接表,可以幫助選擇更好的索引和寫出更優(yōu)化的查詢語句,下面這篇文章主要給大家介紹了關(guān)于Mysql中explain用法的相關(guān)資料,需要的朋友可以參考下
    2022-03-03

最新評論

漳平市| 武鸣县| 师宗县| 赫章县| 常熟市| 井陉县| 冀州市| 蒲城县| 赤城县| 遵义县| 米林县| 黔西县| 方城县| 滁州市| 方山县| 开远市| 隆化县| 德江县| 砀山县| 会东县| 宜兰市| 叙永县| 育儿| 罗甸县| 汶川县| 南皮县| 牡丹江市| 招远市| 沂源县| 同心县| 驻马店市| 青田县| 浑源县| 高淳县| 漾濞| 保靖县| 台中县| 越西县| 聊城市| 钦州市| 嵩明县|