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

MySQL存儲(chǔ)過(guò)程的傳參和流程控制示例講解

 更新時(shí)間:2023年02月10日 14:32:47   作者:陽(yáng)862  
這篇文章主要介紹了MySQL存儲(chǔ)過(guò)程的傳參和流程控制示例講解,?repeat和Loop區(qū)別是repeat有自己退出循環(huán)的語(yǔ)句until,Loop使用的是if判斷語(yǔ)句,本文結(jié)合示例代碼詳細(xì)講解,需要的朋友可以參考下

一.存儲(chǔ)過(guò)程傳參—in

in表示傳入的參數(shù),可以傳入數(shù)值或者變量,即使傳入變量,并不會(huì)更改變量的值,可以?xún)?nèi)部更改,僅僅作用在函數(shù)范圍內(nèi)。

 演示

use test_procedure;
-- 傳入?yún)?shù)in
-- 封裝有參數(shù)的存儲(chǔ)過(guò)程,傳入員工編號(hào),查找員工信息
delimiter $$
create procedure proc6(in in_empno int)
begin
	select * from emp where emp.empno =in_empno;
end $$
delimiter ;
 
call proc6(1001);
 
 
-- 封裝有參數(shù)的存儲(chǔ)過(guò)程,可以通過(guò)傳入部門(mén)名和薪資,查詢(xún)指定部門(mén),并且薪資大于指定值的員工信息
delimiter $$
create procedure proc7(in in_dname char(50),in in_sal int)
begin
	select  * from dept,emp where dept.deptno =emp.deptno and (dept.dname=in_dname) and (in_sal<emp.sal);
end $$
delimiter ;
 
call proc7('學(xué)工部',20000);

二.存儲(chǔ)過(guò)程傳參—out

out表示從存儲(chǔ)過(guò)程內(nèi)部傳值給調(diào)用者

 演示

-- 封裝有參數(shù)的存儲(chǔ)過(guò)程,傳入員工編號(hào),返回員工名字
delimiter $$
create procedure proc8(in in_empno int,out out_ename varchar(50))
begin
	select   ename into out_ename  from emp where emp.empno =in_empno;
end $$
delimiter ;
 
call proc8(1001,@o_ename);-- 執(zhí)行這一句不會(huì)輸出
select @o_ename;

-- 封裝有參數(shù)的存儲(chǔ)過(guò)程,傳入員工編號(hào),返回員工名字和薪資
delimiter $$
create procedure proc9(in in_empno int,out out_ename varchar(50),out out_sal int)
begin
	select  emp.ename,emp.sal  into out_ename,out_sal from emp where emp.empno =in_empno;
end $$
delimiter ;
 
call proc9(1001,@o_ename,@o_sal);
select @o_ename,@o_sal;

 三.存儲(chǔ)過(guò)程傳參—inout

inout表示從外部傳入的參數(shù)經(jīng)過(guò)修改后可以返回的變量,既可以使用傳入變量的值也可以修改變量的值(即使函數(shù)執(zhí)行完)

 演示

-- 傳入一個(gè)數(shù)字,傳出這個(gè)數(shù)字的10倍值
delimiter $$
create procedure proc10(inout num int)
begin
	set num=num*10;
end $$
delimiter ;
 
set @inout_num=10;
call proc10(@inout_num);-- inou不可以直接傳入實(shí)參
select @inout_num;

-- 傳入員工名,拼接部門(mén)號(hào),傳入薪資,求出年薪
-- 關(guān)羽----> 30_關(guān)羽
delimiter $$
create procedure proc11(inout inout_ename varchar(50),inout inout_sal int)
begin
	select  concat_ws('_',emp.deptno,emp.ename)  into inout_ename
	from emp
	where emp.ename =inout_ename;
	set inout_sal=inout_sal*12;
end $$
delimiter ;
 
set @ino_ename='關(guān)羽';
set @ino_sal=20000;
call proc11(@ino_ename,@ino_sal);
select @ino_ename,@ino_sal;

 四.流程控制—判斷

格式

IF語(yǔ)句包含多個(gè)條件判斷,根據(jù)結(jié)果為T(mén)RUE、FALSE執(zhí)行語(yǔ)句,與編程語(yǔ)言中的if、else if、else語(yǔ)法類(lèi)似,其語(yǔ)法格式如下:

 演示

delimiter $$
create procedure proc12(in in_score int)
begin
	
	if in_score<60
		then select '不及格';
	elseif in_score<=80
		then select '及格';
	elseif in_score<=90
		then select '良好';
	elseif in_score<=100
		then select '優(yōu)秀';
	else  
		 select '成績(jī)錯(cuò)誤';
	end if;
end $$
delimiter ;
 
call proc12(77);
-- 輸入員工的名字,判斷工資的情況。
/*
sal < 10000:試用薪資
sal >= 10000 and sal < 20000轉(zhuǎn)正薪資
sal >= 20000 :元老薪資
*/
delimiter $$
create procedure proc13(in in_ename varchar(50))
begin
	declare de_sal decimal(7,2);
	declare de_result varchar(50);
	select emp.sal into de_sal from emp where emp.ename =in_ename;
	if de_sal<10000
		then set de_result='試用薪資';
	elseif de_sal<20000
		then set de_result='轉(zhuǎn)正薪資';
	else
		 set de_result='元老薪資';
	end if;
	select de_sal;
end $$
delimiter ;
 
call proc13('關(guān)羽');
 
 
 
-- 這里用用戶變量處理,就不需要先定義
delimiter $$
create procedure proc14(in in_ename varchar(50))
begin
	declare de_sal decimal(7,2);
 
	select emp.sal into @de_sal from emp where emp.ename =in_ename;
	if @de_sal<10000
		then set @de_result='試用薪資';
	elseif @de_sal<20000
		then set @de_result='轉(zhuǎn)正薪資';
	else
		 set @de_result='元老薪資';
	end if;
 
end $$
delimiter ;
 
call proc14('關(guān)羽');
select @de_sal;
 
 
 
-- 這里是把select放在里面
delimiter $$
create procedure proc15(in in_ename varchar(50))
begin
	declare de_sal decimal(7,2);
 
	select emp.sal into @de_sal from emp where emp.ename =in_ename;
	if @de_sal<10000
		then set @de_result='試用薪資';
	elseif @de_sal<20000
		then set @de_result='轉(zhuǎn)正薪資';
	else
		 set @de_result='元老薪資';
	end if;
	select @de_sal;
end $$
delimiter ;
 
call proc15('關(guān)羽');

 五.流程控制—case

CASE是另一個(gè)條件判斷的語(yǔ)句,類(lèi)似于編程語(yǔ)言中的switch語(yǔ)法

語(yǔ)法

 演示

/*
支付方式:
1  微信支付
2  支付寶支付
3  銀行卡支付
4  其他方式支付
*/
-- 格式一
delimiter $$
create procedure proc16(in in_type int)
begin
	case in_type
		when 1 then select '微信支付';
		when 2 then select '支付寶支付';
		when 3 then select '銀行卡支付';
		when 4 then select '其他方式支付';
	end case;
end $$
delimiter ;
 
call proc16(2);
 
-- 格式二
delimiter $$
create procedure proc17(in in_type int)
begin
	case 
		when in_type=1 then select '微信支付';
		when in_type=2 then select '支付寶支付';
		when in_type=3 then select '銀行卡支付';
		when in_type=4 then select '其他方式支付';
	end case;
end $$
delimiter ;
 
call proc17(4);

 六.流程控制—循環(huán)

概述

  • 循環(huán)是一段在程序中只出現(xiàn)一次,但可能會(huì)連續(xù)運(yùn)行多次的代碼。
  • 循環(huán)中的代碼會(huì)運(yùn)行特定的次數(shù),或者是運(yùn)行到特定條件成立時(shí)結(jié)束循環(huán)

循環(huán)分類(lèi)

  • while
  • repeat
  • loop

循環(huán)控制

  • leave類(lèi)似于break,跳出,結(jié)束當(dāng)前所在的循環(huán)
  • iterate類(lèi)似于continue,繼續(xù),結(jié)束本次循環(huán),繼續(xù)下一次

循環(huán)—while

格式

 演示

/*
【標(biāo)簽:】while循環(huán)條件do
	循環(huán)體;
end while【標(biāo)簽】;
-*/
-- 需求:向表中添加指定條數(shù)的數(shù)據(jù)
-- -------存儲(chǔ)過(guò)程-循環(huán)-while
 
delimiter $$
create procedure proc18(in in_count int)
begin
	declare i int default 1;
	label:while i<=in_count do
		insert into user(id,name,password) values(i,concat('user-',i),123456);
		set i=i+1;
		if i=5 then leave label;
		end if;
	end while label;
	
end $$
delimiter ;
call proc18(10);

這里我的理解,當(dāng)要使用leave、iterate時(shí)要寫(xiě)label就相當(dāng)于一個(gè)名字,當(dāng)然這個(gè)label可以用其他字符代替比如a,只要在使用leave、iterate時(shí)后面加上自己定義的label就行

 iterate:跳過(guò)本次循環(huán)的剩余代碼,進(jìn)入下一次循環(huán)

循環(huán)—repeat

格式

演示

truncate user; 
delimiter $$
create procedure proc20(in in_count int)
begin
	declare i int default 1;
	a:repeat 
		insert into user(id,name,password) values(i,concat('user-',i),123456);
		set i=i+1;
		until i>in_count 
	end repeat;
 
	
end $$
delimiter ;
call proc20(10);

循環(huán)—loop

格式

 演示

 repeat和Loop區(qū)別是repeat有自己退出循環(huán)的語(yǔ)句until,Loop使用的是if判斷語(yǔ)句

到此這篇關(guān)于MySQL存儲(chǔ)過(guò)程的傳參和流程控制的文章就介紹到這了,更多相關(guān)MySQL存儲(chǔ)過(guò)程的傳參內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 8.0.17 安裝與使用教程圖解

    mysql 8.0.17 安裝與使用教程圖解

    這篇文章主要介紹了mysql 8.0.17 安裝與使用教程圖解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • MySQL聯(lián)合查詢(xún)實(shí)現(xiàn)方法詳解

    MySQL聯(lián)合查詢(xún)實(shí)現(xiàn)方法詳解

    聯(lián)合查詢(xún)union將多次查詢(xún)(多條select語(yǔ)句)的結(jié)果,在字段數(shù)相同的情況下,在記錄的層次上進(jìn)行拼接,這篇文章主要給大家介紹了關(guān)于Mysql聯(lián)合查詢(xún)的那些事兒,需要的朋友可以參考下
    2022-11-11
  • mysql-connector-java和mysql-connector-j的區(qū)別小結(jié)

    mysql-connector-java和mysql-connector-j的區(qū)別小結(jié)

    在Java項(xiàng)目中,引入MySQL數(shù)據(jù)庫(kù)通常需通過(guò)Maven管理MySQLConnector/J驅(qū)動(dòng),最新版本的spring-boot-starter-parent中,舊的mysql-connector-java坐標(biāo)不再適用,需改用新的com.mysql:mysql-connector-j,下面就來(lái)介紹一下區(qū)別,感興趣的可以了解一下
    2024-09-09
  • 帶例子詳解Sql中Union和Union?ALL的區(qū)別

    帶例子詳解Sql中Union和Union?ALL的區(qū)別

    這篇文章主要介紹了帶例子詳解Sql中Union和Union?ALL的區(qū)別,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • MySQL SHOW 命令的使用介紹

    MySQL SHOW 命令的使用介紹

    MySQL SHOW 命令的使用介紹,使用mysql的朋友可以參考下。
    2011-08-08
  • MySQL中的主鍵以及設(shè)置其自增的用法教程

    MySQL中的主鍵以及設(shè)置其自增的用法教程

    這篇文章主要介紹了MySQL中的主鍵以及設(shè)置其自增的用法教程,是MySQL入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • MySQL慢日志實(shí)踐小結(jié)

    MySQL慢日志實(shí)踐小結(jié)

    這篇文章主要介紹了MySQL慢日志實(shí)踐小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • MySql 5.6.14 winx64配置方法(免安裝版)

    MySql 5.6.14 winx64配置方法(免安裝版)

    這篇文章主要介紹了MySql 5.6.14 winx64配置方法(免安裝版)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • Mysql多表操作方法講解教程

    Mysql多表操作方法講解教程

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)的多表操作,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-12-12
  • 解決找回mysql數(shù)據(jù)庫(kù)密碼和密碼過(guò)期問(wèn)題

    解決找回mysql數(shù)據(jù)庫(kù)密碼和密碼過(guò)期問(wèn)題

    這篇文章主要介紹了解決找回mysql數(shù)據(jù)庫(kù)密碼和密碼過(guò)期問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評(píng)論

渑池县| 民县| 都江堰市| 隆子县| 仙游县| 阿克苏市| 三亚市| 康乐县| 拉萨市| 沧州市| 响水县| 静乐县| 铜陵市| 门头沟区| 建昌县| 宜兰市| 汉中市| 朝阳市| 宁明县| 晴隆县| 镇巴县| 青海省| 中西区| 建始县| 吴江市| 安西县| 南宫市| 将乐县| 阳谷县| 九江市| 宜城市| 凤城市| 永顺县| 富平县| 涟水县| 周至县| 巩义市| 泸溪县| 滨州市| 腾冲县| 双峰县|