婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL存儲過程的創(chuàng)建、調(diào)用與管理詳解

MySQL存儲過程的創(chuàng)建、調(diào)用與管理詳解

熱門標(biāo)簽:外呼系統(tǒng)打電話上限是多少 百應(yīng)電話機器人優(yōu)勢 武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 怎樣在地圖標(biāo)注銷售區(qū)域 曲靖移動外呼系統(tǒng)公司 啥是企業(yè)400電話辦理 南昌三維地圖標(biāo)注 地圖標(biāo)注費用是多少 電話外呼系統(tǒng)改號

存儲過程簡介

為什么要用存儲過程?

MySQL5.0 版本開始支持存儲過程。

大多數(shù) SQL 語句都是針對一個或多個表的單條語句。并非所有的操作都那么簡單。經(jīng)常會有一個完整的操作需要多條語句才能完成。

存儲過程簡單來說,就是為以后的使用而保存的一條或多條 MySQL 語句的集合??蓪⑵湟暈榕幚砦募km然他們的作用不僅限于批處理。

存儲過程思想上很簡單,就是數(shù)據(jù)庫 SQL 語言層面的代碼封裝與重用。

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

  1. 通過把處理封裝在容易使用的單元中,簡化復(fù)雜的操作;
  2. 簡化對變動的管理。如果表名、列名或業(yè)務(wù)邏輯有變化。只需要更改存儲過程的代碼,使用它的人員不會改自己的代碼;
  3. 通常存儲過程有助于提高應(yīng)用程序的性能。當(dāng)創(chuàng)建的存儲過程被編譯之后,就存儲在數(shù)據(jù)庫中。 但是,MySQL 實現(xiàn)的存儲過程略有不同。MySQL 存儲過程按需編譯。在編譯存儲過程之后,MySQL 將其放入緩存中。MySQL 為每個連接維護自己的存儲過程高速緩存。如果應(yīng)用程序在單個連接中多次使用存儲過程,則使用編譯版本,否則存儲過程的工作方式類似于查詢;
  4. 存儲過程有助于減少應(yīng)用程序和數(shù)據(jù)庫服務(wù)器之間的流量,因為應(yīng)用程序不必發(fā)送多個冗長的 SQL 語句,而只用發(fā)送存儲過程的名稱和參數(shù);
  5. 存儲的程序?qū)θ魏螒?yīng)用程序都是可重用的和透明的。存儲過程將數(shù)據(jù)庫接口暴露給所有應(yīng)用程序,以便開發(fā)人員不必開發(fā)存儲過程中已支持的功能;
  6. 存儲的程序是安全的。數(shù)據(jù)庫管理員可以向訪問數(shù)據(jù)庫中存儲過程的應(yīng)用程序授予適當(dāng)?shù)臋?quán)限,而不向基礎(chǔ)數(shù)據(jù)庫表提供任何權(quán)限。

存儲過程的缺點

  1. 如果使用大量存儲過程,那么使用這些存儲過程的每個連接的內(nèi)存使用量將會大大增加。 此外,如果您在存儲過程中過度使用大量邏輯操作,則 CPU 使用率也會增加,因為 MySQL 數(shù)據(jù)庫最初的設(shè)計側(cè)重于高效的查詢,不利于邏輯運算;
  2. 存儲過程的構(gòu)造使得開發(fā)具有復(fù)雜業(yè)務(wù)邏輯的存儲過程變得更加困難;
  3. 很難調(diào)試存儲過程。只有少數(shù)數(shù)據(jù)庫管理系統(tǒng)允許您調(diào)試存儲過程。不幸的是,MySQL 不提供調(diào)試存儲過程的功能;
  4. 開發(fā)和維護存儲過程并不容易。開發(fā)和維護存儲過程通常需要一個不是所有應(yīng)用程序開發(fā)人員擁有的專業(yè)技能。這可能會導(dǎo)致應(yīng)用程序開發(fā)和維護階段的問題。

MySQL 中的存儲過程

創(chuàng)建與調(diào)用過程

創(chuàng)建存儲過程,代碼如下所示:

-- 創(chuàng)建存儲過程 
create procedure mypro(in a int,in b int,out sum int) 
begin 
set sum = a+b; 
end;

運行結(jié)果如下

也可以在 Navicat 客戶端“函數(shù)”節(jié)點下查看過程,如下圖所示:

調(diào)用存儲過程,代碼如下所示:

call mypro(1,2,@s);-- 調(diào)用存儲過程 
select @s;-- 顯示過程輸出結(jié)果

運行結(jié)果

存儲過程語法解析

  • create procedure 用來創(chuàng)建過程;
  • mypro 用來定義過程名稱;
  • (in a int,in b int,out sum int)表示過程的參數(shù),其中 in 表示輸入?yún)?shù),out 表示輸出參數(shù)。類似于 Java 定義方法時的形參和返回值;
  • begin 與end 表示過程主體的開始和結(jié)束,相當(dāng)于 Java 定義方法的一對大括號;
  • call用來調(diào)用過程,@s 是用來接收過程輸出參數(shù)的變量

存儲過程的參數(shù)

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

  • IN 輸入?yún)?shù):表示調(diào)用者向過程傳入值(傳入值可以是字面量或變量);
  • OUT 輸出參數(shù):表示過程向調(diào)用者傳出值(可以返回多個值)(傳出值只能是變量);
  • INOUT輸入輸出參數(shù):既表示調(diào)用者向過程傳入值,又表示過程向調(diào)用者傳出值(值只能是變量)。

存儲過程根據(jù)參數(shù)可分為四種類別:

1).沒有參數(shù)的過程;

2).只有輸入?yún)?shù)的過程;

3).只有輸出參數(shù)的過程;

4).包含輸入和輸出參數(shù)的過程。

變量

MySQL 中的存儲過程類似 java 中的方法。

既然如此,在存儲過程中也同樣可以使用變量。java 中的局部變量作用域是變量所在的方法,而 MySQL 中的局部變量作用域是所在的存儲過程。

變量定義

DECLARE variable_name [,variable_name...] datatype [DEFAULT value];

declare用于聲明變量;

variable_name表示變量名稱;

datatype為 MySQL 的數(shù)據(jù)類型;

default用于聲明默認(rèn)值;

例如:

declare name varchar(20) default ‘jack'。

變量賦值

SET 變量名 = 表達式值 [,variable_name = expression ...]

在存儲過程中使用變量,代碼如下所示

use schooldb;-- 使用 schooldb 數(shù)據(jù)庫
-- 創(chuàng)建過程
create procedure mypro1()
begin
declare name varchar(20);
set name = '丘處機';
select * from studentinfo where studentname = name;
end;
-- 調(diào)用過程
call mypro1();

運行結(jié)果

流程控制語句

if 條件語句

IF 語句包含多個條件判斷,根據(jù)結(jié)果為 TRUE、FALSE執(zhí)行語句,與編程語言中的 if、else if、else 語法類似。

定義存儲過程,輸入一個整數(shù),使用 if 語句判斷是正數(shù)還是負(fù)數(shù),代碼如下所示:

-- 創(chuàng)建過程
create procedure mypro2(in num int)
begin
if num0 then -- 條件開始
select '負(fù)數(shù)';
elseif num=0 then
select '不是正數(shù)也不是負(fù)數(shù)';
else
select '正數(shù)';
end if;-- 條件結(jié)束
end;
-- 調(diào)用過程
call mypro2(-1);

運行結(jié)果

case 條件語句

case是另一個條件判斷的語句,類似于編程語言中的 choose、when語法。MySQL 中的 case語句有兩種語法
格式。

定義存儲過程,輸入一個整數(shù),使用 case 語句判斷是正數(shù)還是負(fù)數(shù),代碼如下所示:

-- 創(chuàng)建過程
create procedure mypro3(in num int)
begin
case -- 條件開始
when num0 then select '負(fù)數(shù)';
when num=0 then select '不是正數(shù)也不是負(fù)數(shù)';
else select '正數(shù)';
end case; -- 條件結(jié)束
end;
-- 調(diào)用過程
call mypro3(1);

運行結(jié)果

定義存儲過程,輸入一個整數(shù),使用 case 語句判斷是 1 還是 2,代碼如下所示:

-- 創(chuàng)建過程
create procedure mypro4(in num int)
begin
case num -- 條件開始
when 1 then select '數(shù)值是 1';
when 2 then select '數(shù)值是 2';
else select '不是 1 也不是 2';
end case; -- 條件結(jié)束
end;
-- 調(diào)用過程
call mypro4(3);

運行結(jié)果

兩種 case 語法都可以實現(xiàn)條件判斷,但第一種適合范圍值判斷,而第二種適合確定值判斷。

while 循環(huán)語句

while語句的用法和 java中的 while循環(huán)類似。

定義存儲過程,使用 while 循環(huán)輸出 1 到 10 的累加和,代碼如下所示:

-- 創(chuàng)建過程
create procedure mypro5(out sum int)
begin
declare num int default 0;
set sum = 0;
while num10 do -- 循環(huán)開始
set num = num+1;
set sum = sum+num;
end while; -- 循環(huán)結(jié)束
end;
-- 調(diào)用過程
call mypro5(@sum);
-- 查詢變量值
select @sum;

運行結(jié)果

repeat 循環(huán)語句

repeat語句的用法和 java中的 do…while 語句類似,都是先執(zhí)行循環(huán)操作,再判斷條件,區(qū)別是 repeat表達
式值為 false時才執(zhí)行循環(huán)操作,直到表達式值為 true停止。

定義存儲過程,使用 repeat 循環(huán)輸出 1 到 10 的累加和,代碼如下所示:

-- 創(chuàng)建過程
create procedure mypro6(out sum int)
begin
declare num int default 0;
set sum = 0;
repeat-- 循環(huán)開始
set num = num+1;
set sum = sum+num;
until num>=10
end repeat; -- 循環(huán)結(jié)束
end;
-- 調(diào)用過程
call mypro6(@sum);
-- 查詢變量值
select @sum;

運行結(jié)果

loop 循環(huán)語句

循環(huán)語句,用來重復(fù)執(zhí)行某些語句。

執(zhí)行過程中可使用 leave語句或 iterate 跳出循環(huán),也可以嵌套 IF等判斷語句。

leave語句效果相當(dāng)于 java 中的 break,用來終止循環(huán);

iterate語句效果相當(dāng)于 java 中的 continue,用來結(jié)束本次循環(huán)操作,進入下一次循環(huán)。

定義存儲過程,使用 loop 循環(huán)輸出 1 到 10 的累加和,代碼如下所示:

-- 創(chuàng)建過程
create procedure mypro7(out sum int)
begin
declare num int default 0;
set sum = 0;
loop_sum:loop-- 循環(huán)開始
set num = num+1;
set sum = sum+num;
if num>=10 then
leave loop_sum;
end if;
end loop loop_sum; -- 循環(huán)結(jié)束
end;
-- 調(diào)用過程
call mypro7(@sum);
-- 查詢變量值
select @sum;

運行結(jié)果

代碼中的 loop_sum 相當(dāng)于給循環(huán)貼個標(biāo)簽,方便多重循環(huán)時靈活操作。

存儲過程的管理

存儲過程的管理主要包括:顯示過程、顯示過程源碼、刪除過程。

比較簡單的方式就是利用 navicat 客戶端工具進行管理,鼠標(biāo)點擊操作即可,如下圖所示:

顯示存儲過程

SHOW PROCEDURE STATUS;

顯示特定數(shù)據(jù)庫的存儲過程

SHOW PROCEDURE status where db = 'schooldb';

顯示特定模式的存儲過程,要求顯示名稱中包含“my”的存儲過程

SHOW PROCEDURE status where name like '%my%';

顯示存儲過程“mypro1”的源碼

SHOW CREATE PROCEDURE mypro1;

刪除存儲過程“mypro1”

drop PROCEDURE mypro1;

總結(jié)

到此這篇關(guān)于MySQL存儲過程的創(chuàng)建、調(diào)用與管理的文章就介紹到這了,更多相關(guān)MySQL存儲過程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Mysql 用戶權(quán)限管理實現(xiàn)
  • 詳解MySQL 用戶權(quán)限管理
  • 詳解MySQL InnoDB存儲引擎的內(nèi)存管理
  • Mysql實戰(zhàn)練習(xí)之簡單圖書管理系統(tǒng)

標(biāo)簽:黑河 錦州 荊州 滄州 隨州 吉林 甘南 資陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL存儲過程的創(chuàng)建、調(diào)用與管理詳解》,本文關(guān)鍵詞  MySQL,存儲,過程,的,創(chuàng)建,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL存儲過程的創(chuàng)建、調(diào)用與管理詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL存儲過程的創(chuàng)建、調(diào)用與管理詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲成av人片一区二区| 国产老肥熟一区二区三区| 欧洲生活片亚洲生活在线观看| 日韩欧美中文一区二区| 欧美视频在线播放| av不卡一区二区三区| 国产精品小仙女| 99视频在线观看一区三区| av电影在线观看完整版一区二区| 91免费版在线| 狠狠狠色丁香婷婷综合激情| 国产麻豆91精品| 奇米精品一区二区三区在线观看| 欧美三级在线播放| 日韩精品一卡二卡三卡四卡无卡| 日韩亚洲欧美在线观看| 精品国产精品一区二区夜夜嗨| 日韩国产成人精品| 国产ts人妖一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美视频日韩视频在线观看| 欧美电影一区二区| 精品国产在天天线2019| 亚洲视频你懂的| 国产在线精品一区二区三区不卡| 国产日产欧美一区| 亚洲一区二区美女| 盗摄精品av一区二区三区| 欧美日韩国产高清一区二区 | 欧美精品一区在线观看| 91天堂素人约啪| 丁香另类激情小说| 欧美一区二区三区喷汁尤物| 亚洲免费视频成人| 色婷婷精品大视频在线蜜桃视频| 国产精品国产三级国产专播品爱网 | 国产精品嫩草久久久久| 老色鬼精品视频在线观看播放| 欧美无砖砖区免费| 2023国产精品| 香蕉久久夜色精品国产使用方法| 国产精品入口麻豆九色| 久久精品99国产国产精| 欧美探花视频资源| 自拍视频在线观看一区二区| 在线免费不卡视频| 亚洲不卡一区二区三区| 国产精品一二三四区| 欧美少妇一区二区| 亚洲综合另类小说| 91极品美女在线| 亚洲大型综合色站| 一本色道久久加勒比精品| 亚洲精品视频观看| 欧美日韩一区久久| 国模少妇一区二区三区| 99久久99精品久久久久久| 国产精品丝袜在线| 99精品久久久久久| 亚洲国产视频在线| 欧美精品一区视频| 欧美日本韩国一区二区三区视频 | 激情文学综合网| 国产精品久久久久一区| 亚洲福利一区二区| 精品欧美乱码久久久久久| 日韩电影免费一区| 日本一区二区三区国色天香 | 日韩精品一级二级| 18欧美乱大交hd1984| 欧美男人的天堂一二区| 国产精品影视在线观看| 国产精品你懂的| 国产欧美日韩另类一区| 日韩美女主播在线视频一区二区三区| 制服丝袜亚洲精品中文字幕| 国产精品系列在线播放| 白白色 亚洲乱淫| 日本美女一区二区| 91福利社在线观看| 成人一二三区视频| 成人午夜大片免费观看| 国产精品三级电影| 免费国产亚洲视频| 久久精品水蜜桃av综合天堂| www国产精品av| 午夜久久久影院| www.欧美日韩| 国产欧美一区二区三区鸳鸯浴 | 18成人在线视频| 久久精品一区二区三区四区| 国产女人aaa级久久久级| 日韩理论片在线| 天堂在线亚洲视频| 免费高清在线视频一区·| 久草中文综合在线| 99久久精品免费| 91精品国产综合久久福利软件| 国产精品视频观看| 国产精品福利一区二区三区| 亚洲另类色综合网站| 亚洲成a人片综合在线| 麻豆一区二区三区| 色综合久久天天综合网| 欧美精品一区二区三区在线播放| 狠狠久久亚洲欧美| 色偷偷久久一区二区三区| 欧美三区免费完整视频在线观看| 日韩成人免费在线| 成人性色生活片免费看爆迷你毛片| 中文成人av在线| 国产成人免费xxxxxxxx| 欧美一区二区三区视频免费 | 亚州成人在线电影| 丁香激情综合国产| 精品粉嫩超白一线天av| 日本在线不卡一区| 欧美写真视频网站| 久久精品一区二区| 国产成人一级电影| 久久日韩粉嫩一区二区三区| 亚洲免费av观看| 色婷婷久久一区二区三区麻豆| 首页国产欧美久久| 欧美日韩成人一区| 亚洲成人午夜影院| 日韩一级片在线观看| 成人精品免费看| 亚洲人成网站影音先锋播放| 国产乱色国产精品免费视频| 香港成人在线视频| av午夜精品一区二区三区| 国产亚洲人成网站| 国产成人精品在线看| 色老汉一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 欧美国产97人人爽人人喊| 午夜激情综合网| 色拍拍在线精品视频8848| 国产精品视频一二| 99久久综合99久久综合网站| 国产亚洲一区二区三区| 精品久久久久一区| 精品一二线国产| 国产婷婷色一区二区三区在线| 色av一区二区| 一区二区三区在线观看欧美| 成人性色生活片| 亚洲综合免费观看高清在线观看| 久久精品免视看| av亚洲精华国产精华精华| 亚洲精品网站在线观看| 欧美一区二区久久| 九九视频精品免费| 国产女人18毛片水真多成人如厕| 欧美国产精品一区| 成人午夜在线视频| 国产日韩欧美一区二区三区乱码 | 欧美久久久久久久久| 日本中文字幕一区| 久久蜜臀精品av| av一区二区久久| 成人污污视频在线观看| 日韩精品亚洲专区| 亚洲免费观看高清完整版在线观看熊| 欧美日韩在线免费视频| 日韩精品国产精品| 国产日产欧美一区二区视频| 欧美精品一区视频| 日韩一区二区三| 精品粉嫩aⅴ一区二区三区四区| 亚洲免费在线播放| 国产精品视频免费| 亚洲男同性恋视频| 亚洲欧美在线观看| 1000精品久久久久久久久| 久久欧美一区二区| 国产欧美视频在线观看| 国产精品护士白丝一区av| 亚洲免费在线视频一区 二区| 欧美午夜不卡在线观看免费| www.亚洲国产| 精品嫩草影院久久| 一区二区三区资源| 成人免费视频caoporn| 欧美日韩电影在线播放| 国产精品不卡一区二区三区| 亚洲黄色小说网站| 国产999精品久久久久久绿帽| 一区二区成人在线| 久久99精品国产麻豆婷婷| 91在线观看免费视频| 中文字幕免费在线观看视频一区| 26uuuu精品一区二区| 亚洲黄色免费电影| 色婷婷久久久久swag精品 | 欧美一级欧美三级在线观看 | 日韩免费高清视频| 欧美哺乳videos| 国产精品久久久久一区|