MySQL資料庫儲存過程詳解

2021-10-24 20:40:31 字數 2445 閱讀 5302

mysql資料庫儲存過程詳解

一、儲存過程

1、概念

儲存過程(stored procedure)是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件。

儲存過程是為了完成特定功能的sql語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數(需要時)來呼叫執行。

儲存過程思想上很簡單,就是資料庫 sql 語言層面的**封裝與重用。

儲存過程就是資料庫中的函式

2、優缺點

優點

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

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

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

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

缺點

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

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

3、語法結構

delimiter  $$  //宣告語句開始

create procedure name(引數)//宣告儲存過程

begin //儲存開始

....

end //儲存結束

delimiter ; 宣告語句結束

4、例項

delimiter  $$

create procedure in10(in p_name char(10),in p_scroe int)

begin

create table if not exists sg(name char(10),scroe int(4));

insert into t values (p_name,p_scroe);

select name,scroe,case when scroe >=70 then '合格'

else '不合格'

end as 成績 from t;

end $$

delimiter ;

二、儲存過程的引數

1、分類

mysql儲存過程的引數用在儲存過程的定義,共有三種引數型別,in,out,inout,形式如:

createprocedure 儲存過程名([[in |out |inout ] 引數名 資料類形...])
in 輸入引數:表示呼叫者向過程傳入值(傳入值可以是字面量或變數)

out 輸出引數:表示過程向呼叫者傳出值(可以返回多個值)(傳出值只能是變數)。因為out是向呼叫者輸出引數,不接收輸入的引數

inout 輸入輸出引數:既表示呼叫者向過程傳入值,又表示過程向呼叫者傳出值(值只能是變數)

declare: 在儲存過程中加變數要宣告 declare

var:區域性變數,只能在儲存過程中使用

2、mysql儲存過程的呼叫

用call和你過程名以及乙個括號,括號裡面根據需要,加入引數,引數包括輸入引數、輸出引數、輸入輸出引數。

3、mysql儲存過程的控制語句

有條件語句(if-then-slse、case)、迴圈語句(while…end while)等等

要在外面先建立乙個表 :create table cook(name char(10) not null,score int(5) not null,primary key (name));

delimiter $$

create procedure tt(in a char(10),in b int(5))

begin

if b>=60 then

insert into cook (q,w,e) values (a,b,'合格');

else

insert into cook (q,w,e) values (a,b,'不合格');

end if;

end $$

delimiter ;

call tt('zhangsan',44);

4、mysql儲存過程的修改

alter procedure
更改用 create procedure 建立的預先指定的儲存過程,其不會影響相關儲存過程或儲存功能。

5.mysql儲存過程的刪除

drop procedure

例項詳解MySql資料庫儲存過程

1 mysql儲存過程建立 通過以下簡單的例子,來簡單學習並建立乙個簡單的儲存過程,從執行結果中可以得到table name的最大id。drop procedure if exists proc name delimiter create procedure proc name 建立儲存過程 引數 ...

十二 MySQL資料庫 儲存過程詳解

參見mysql資料庫 儲存過程詳解 案例 drop procedure ifexists adddep delimiter create definer root localhost procedure adddep in depname varchar 32 in parentid int in ...

mysql資料庫 儲存過程

類似於 函式 是一組為了完成特定功能的sql語句集,第一次編譯,以後可以直接呼叫不需要再次編譯。根據定義的不同需要傳入引數 1 增強sql語言的功能和靈活性 儲存過程可以用控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的運算。2 標準元件式程式設計 儲存過程被建立後,可以在程式中被多次呼叫...