mysql 儲存過程 模式 MySQL儲存過程

2021-10-19 20:39:34 字數 2231 閱讀 6837

儲存過程

儲存程式(英語:stored procedure),又稱為儲存過程,是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件,它可以視為資料庫中的一種函式或子程式。

優點儲存程式可封裝,並隱藏複雜的商業邏輯。

儲存程式可以回傳值,並可以接受引數。

儲存程式無法使用 select 指令來執行,因為它是子程式,與檢視表資料表或使用者定義函式不同。

儲存程式可以用在資料檢驗,強制實行商業邏輯等。

缺點儲存程式,往往定製於特定的資料庫上,因為支援的程式語言不同。當切換到其他廠商的資料庫系統時,需要重寫原有的儲存程式。

儲存程式的效能調校與撰寫,受限於各種資料庫系統。

建立語法

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

begin

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

end引數列表包含三部分

引數模式

in 該引數可以作為輸入,即引數需要呼叫方傳入

out 該引數可以作為輸出,即引數可以作為返回值

inout 該引數既可以作為輸入又可以作為輸出,即引數既需要傳入值,又可以返回值

引數名引數型別

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

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

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

delimiter 結束標記

#示例delimiter $

呼叫語法

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

空參儲存過程

#向account中插入一行資料

delimiter $

#將結束符臨時換為$

create procedure inser_acc()

#空參begin

insert into account values('b-611','haitang',250);

end $

#儲存過程結束

call inser_acc$

#呼叫儲存過程

in模式引數的儲存過程

#輸入賬號密碼檢查是否登陸成功

delimiter $

#將結束符臨時換為$

create procedure log_in(in username varchar(20),in password varchar(20))

begin

declare result int default 0;

#宣告並初始化

select count(*) into result

#賦值from admin a

where a.username=username and a.password=password;

select if(result>0,'登陸成功','登陸失敗');

#列印結果

end $

out模式引數的儲存過程

#根據輸入名字在employees表中查詢其工資

delimiter $

#將結束符臨時換為$

create procedure get_sal(in name varchar(20),out sal int)

begin

select e.salary into sal

from employees e

where e.name=name;

end $

set @sal=0$

#宣告初始化使用者變數

call get_sal('小明',@sal)$

#呼叫儲存過程

select @sal$

#列印使用者變數

inout模式引數的儲存過程

#將傳入兩個值各加一

delimiter $

#臨時將結束符轉換為$

create procedure plus_one(inout a int,inout b int)

begin

set a=a+1;

set b=b+1;

end $

set @a=1$

#宣告並初始化兩個使用者變數

set @b=2$

call plus_one(@a,@b)$

#呼叫select @a,@b$

#列印儲存過程的刪除

drop procedure 儲存過程名;

#一次只能刪除乙個

查詢儲存過程資訊

show create procedure 儲存過程名;

Mysq 儲存過程

drop procedure if exists xl 建立儲存過程 delimiter 轉譯字元 使用 代替 create procedure xl begin select from fd car report end delimiter 轉譯字元 使用 代替 call xl 呼叫儲存過程 de...

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...

mysql 儲存過程 mysql 儲存過程

建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...