mysql學習筆記 6 儲存過程

2021-10-04 21:36:32 字數 3692 閱讀 6450

原本覺得掌握最基本的語法就行了,但發現老師最近又提到了儲存過程,我覺得有必要學習整理一下,以下是我的簡單筆記

儲存過程的含義以及優點儲存過程的建立語法

create procedure 儲存過程名(引數列表)

begin

儲存過程體(一般合法的sql語句)

end

引數列表包含三個部分(引數模式,引數名稱,引數型別)

引數列表舉例:in stuname varchar(20)

引數模式:

注意:

如果儲存過程只有一句話,begin end可以省略

儲存過程體中的每條sql語句的結尾要求必須加分號

儲存過程體的結尾可以使用delimiter重新設定

語法:delimiter 結束標記

案例:delimiter $

儲存過程的呼叫語法

call 儲存過程名(實參列表)

;

儲存過程的舉例1.空參的儲存過程 (也就是沒有引數)

例:向student表中插入4條資料 。

先建立乙個student表

create table student

( id int auto_increment,

//學號

name varchar(20

),//名字

score double

,//分數

primary key

(id)

);

建立相應的儲存過程

delimiter $

create procedure myp1()

begin

insert into student

(name,score)

values (

'jack',89

),('sam',93

),('bobi'

,100),

('alen',85

);end $

建立好後我們需要呼叫這個儲存過程就能實現插入操作

call myp1()

;

然後我們檢視student表就可以發現成功插入了4條資料

2.建立帶in模式引數的儲存過程

例1:通過學生id,查詢對應分數(我這裡就簡單的單錶查詢進行演示一下)

delimiter $

create procedure myp02

(in id int

)begin

select s.score

from student s

where s.id=id;

end $

呼叫該儲存過程

call myp02(1

);

這裡傳入的id為1,即返回jack的分數

例2.案例1:輸入id和學生名,判斷該學生是否存在

delimiter $

create procedure myp004

(in id int

,in name varchar(20

)) begin

declare result int

default

0;#宣告變數和預設值

select count(*

) into result#賦值

from student s

where s.id = id

and s.name = name;

select if

(result>0,

'存在學生'

,'不存在學生'

)'存在與否'

;end $

呼叫過程

call myp004(1

,'哈哈'

);

2.建立帶out模式引數的儲存過程

準備:先建立乙個課程表

create table class

( id int primary key auto_increment,

cname varchar(20));

我向其中插入了以下4條資料

例:通過學生id,查詢對應課程

delimiter $

create procedure myp5

(in sid int

,out cname varchar(20

))begin

select c.cname into cname

from class c

inner join student s on s.id = c.id

where s.id = sid;

end $

呼叫過程

call myp5(1

,@name)

;//這裡其實就是將更具id查到的課程名賦值給變數@name

select @name;

//我們再查詢這個變數就可以得到這個課程名

2.建立帶inout模式引數的儲存過程

例:傳入a和b兩個值,最終a和b都翻倍並返回

delimiter $

create procedure myp6

(inout a int

, inout b int

)begin

set a=a*2;

set b=b*2;

end$

呼叫過程

set @a=2;

//設定變數@a=2

set @b=4;

//設定變數@b=4

call myp6

(@a,@b)

;//將兩個變數作為引數傳入該儲存過程

select @a,@b;

//然後我們再檢視變數@a和@b的值

刪除儲存過程語法:drop procedure 儲存過程名;注:一次只能刪除乙個

檢視儲存過程的資訊

語法:show create procedure 儲存過程名;

例:show create procedure myp1;

此處只是列舉了最基礎的例子,很多情況可能沒有涉及到,希望各位大佬能夠提出自己的見解,共同學習,共同進步!

mysql學習筆記 儲存過程

sql view plain copy use test drop table if exists t8 create table t8 s1 int,primary key s1 drop procedure if exists handlerdemo delimiter create proce...

Mysql儲存過程學習筆記

在pl sql中,主要包括declare部分 宣告引數 begin.end部分和例外部分。mysql儲存過程建立的格式 create procedure過程名 過程引數 特性.過程體 選中 函式右鍵 新建建立 完成 輸入函式體 儲存名字 語法 create procedire 儲存過程命名 開始 函...

mysql儲存過程學習筆記

儲存過程理解 1.儲存過程 類似函式或者方法,是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數 如果該儲存過程帶有引數 來呼叫執行它。2.mysql儲存過程的建立 mysql儲存過程建立的格式 create procedure 過程名 過程引數 特...