真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql存儲(chǔ)過程inoutinout

存儲(chǔ)過程的好處

存儲(chǔ)過程是一組預(yù)編譯好的sql語(yǔ)句,用來(lái)執(zhí)行某個(gè)特定的功能。這樣可以省去sql解析、編譯、優(yōu)化的過程,提高了執(zhí)行效率,同時(shí),在調(diào)用的時(shí)候只傳一個(gè)存儲(chǔ)過程的名稱,而不用傳一大堆sql語(yǔ)句,減少了網(wǎng)絡(luò)傳輸。也間接提高了執(zhí)行效率。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)儀隴免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

存儲(chǔ)過程與自定義函數(shù)的區(qū)別

  1. 存儲(chǔ)過程是一組sql語(yǔ)句,為了實(shí)現(xiàn)某個(gè)獨(dú)立的功能,一般獨(dú)立執(zhí)行。而自定義函數(shù)更多的作為其它sql語(yǔ)句的組成部分出現(xiàn)。
  2. 自定義函數(shù)只能有一個(gè)返回值,而存儲(chǔ)過程可以有多個(gè)返回值。
  3. 存儲(chǔ)過程功能復(fù)雜,函數(shù)針對(duì)性更強(qiáng)

存儲(chǔ)過程定義

存儲(chǔ)過程是sql語(yǔ)句和控制語(yǔ)句的預(yù)編譯集合,以一個(gè)名稱存儲(chǔ)并作為一個(gè)單元處理。

創(chuàng)建語(yǔ)法

create 
[definer = {user|current_user}]
procedure proc_name ([參數(shù)[,....]])
some body code....
參數(shù):
[in | out | inout] 參數(shù)名 類型

in  傳入的參數(shù)
out 返回的參數(shù)
inout 傳入 改變 并且返回的參數(shù)

調(diào)用語(yǔ)法

call proc_name(參數(shù));
如果沒有參數(shù),括號(hào)可以省略;

示例

創(chuàng)建沒有參數(shù)的存儲(chǔ)過程

create procedure ver()
select version();

調(diào)用

call ver(); 或 call ver;

當(dāng)然這里把一個(gè)函數(shù)放進(jìn)一個(gè)存儲(chǔ)過程沒有什么意義。只是單純?yōu)榱伺e例。

創(chuàng)建一個(gè)in參數(shù)的存儲(chǔ)過程

我們經(jīng)常查詢id為某值的用戶,所以我們把它寫成一個(gè)存儲(chǔ)過程。

delimiter //
create procedure findUserById(in userId int unsigned)
begin
select * from user where id = userId;
end //
delimiter ;

注意:參數(shù)名不要和數(shù)據(jù)表中的字段名相同,否則會(huì)出現(xiàn)意想不到的后果。

調(diào)用
call findUserById(1);

創(chuàng)建一個(gè)in 一個(gè)out參數(shù)的存儲(chǔ)過程

刪除一個(gè)用戶并且返回剩余用戶數(shù)量

delimiter //
create procedure delUserByIdAndReturnNums(in userId int unsigned,out nums int unsigned )
begin
delete from user where id=userId;
select count(id)  from user into nums;
end //
delimiter ;

調(diào)用:
call delUserByIdAndReturnNums(1,@nums);調(diào)用過后我們就可以查看@nums的值了。
br/>調(diào)用過后我們就可以查看@nums的值了。

創(chuàng)建一個(gè)in多個(gè)out參數(shù)的存儲(chǔ)過程

刪除一個(gè)用戶并返回剩余用戶總數(shù) 和 被刪除用戶的姓名

delimiter //
create procedure delUser(in userId int ,out nums int,out username varchar(20))
begin
select name from user where id = userId into username;
delete from user where id = userId;
select count(id) from user into nums;
end //
delimiter ;

調(diào)用
call delUser(3,@nums,@username);
調(diào)用過后可以查看兩個(gè)變量的值。
select @nums;
select @username;

創(chuàng)建帶有inout參數(shù)的存儲(chǔ)過程

定義一個(gè)存儲(chǔ)過程,傳入一個(gè)整數(shù)得到其平方值。

delimiter // 
create procedure square(inout num int)
begin 
set num=num*num;
end //
delimiter ;

調(diào)用:
由于其參數(shù)是inout類型,所以我們需要傳入一個(gè)賦值過的變量,以便在存儲(chǔ)過程內(nèi)部對(duì)其修改后返回。

set @num=3;
call square(@num);
select @num;

其結(jié)果如下:
MySQL> set @num=3;
Query OK, 0 rows affected (0.00 sec)

mysql> call square(@num);
Query OK, 0 rows affected (0.02 sec)

mysql> select @num;
+------+
| @num |
+------+
| 9 |
+------+
1 row in set (0.00 sec)


文章題目:mysql存儲(chǔ)過程inoutinout
URL標(biāo)題:http://weahome.cn/article/pdpjsp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部