好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > MySQL存儲過程的深入講解(in、out、inout)

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

熱門標簽:廣東人工電話機器人 南通自動外呼系統軟件 百度地圖圖標標注中心 石家莊電商外呼系統 湖南人工外呼系統多少錢 申請外呼電話線路 日照旅游地圖標注 芒果電話機器人自動化 信陽穩定外呼系統運營商

一、簡介

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

存儲過程的優點

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

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

3、在服務器端存儲,客戶端調用時,降低網絡負載

4、可多次重復被調用,可隨時修改,不影響客戶端調用

5、 可完成所有的數據庫操作,也可控制數據庫的信息訪問權限

為什么要用存儲過程?

1.減輕網絡負載;2.增加安全性

二、創建存儲過程

2.1 創建基本過程

使用create procedure語句創建存儲過程

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

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

實例:

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

調用存儲過程

call 存儲過程名(實際參數);
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 存儲過程的參數

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

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

IN 輸入參數:表示調用者向過程傳入值(傳入值可以是字面量或變量)

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

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

傳遞參數實例:

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變量,執行事務
mysql> call test1(4); 
+----+---------+-------+
| id | name | score |
+----+---------+-------+
| 4 | zhaoliu | 90 |
+----+---------+-------+
1 row in set (0.00 sec)

#將6傳遞給in_id變量,執行事務
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 事務
mysql> call test2(@aa);
+------+
| aa |
+------+
| NULL |
+------+
#out向調用者輸出參數,不接收輸入的參數,所以aa為null
1 row in set (0.00 sec)
+------+
| aa |
+------+
| 2 |
+------+
事務將aa變量設置為2(設置的是全局),則可進行輸出
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)
#事務外查詢變量,已經被修改

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參數會將全局變量的值傳入存儲過程中,而out參數不會將全局變量的值傳入存儲過程中。在存儲過程使用中,參數值in,out,inout都會發生改變。

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

調用完存儲過程后,發現in參數不會對全局變量的值引起變化,而out和inout參數調用完存儲過程后,會對全局變量的值產生變化,會將存儲過程引用后的值賦值給全局變量。

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

總結

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

您可能感興趣的文章:
  • MySQL存儲過程的創建、調用與管理詳解
  • MySQL存儲過程的查詢命令介紹
  • MySQL存儲過程in、out和inout參數示例和總結
  • MySQL修改存儲過程的詳細步驟
  • Mysql 存儲過程中使用游標循環讀取臨時表
  • Mysql修改存儲過程相關權限問題
  • MySQL之存儲過程按月創建表的方法步驟
  • 淺談MySql 視圖、觸發器以及存儲過程
  • mysql存儲過程之if語句用法實例詳解
  • MySQL 存儲過程的優缺點分析

標簽:沈陽 惠州 呼和浩特 牡丹江 合肥 公主嶺 天津 阿里

巨人網絡通訊聲明:本文標題《MySQL存儲過程的深入講解(in、out、inout)》,本文關鍵詞  MySQL,存儲,過程,的,深入,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL存儲過程的深入講解(in、out、inout)》相關的同類信息!
  • 本頁收集關于MySQL存儲過程的深入講解(in、out、inout)的相關信息資訊供網民參考!
  • 推薦文章