MySql儲存過程初學

2021-07-28 14:19:03 字數 1732 閱讀 6336

使用mysql2年多時間,一直沒有使用過儲存過程,今天來學習一下。

儲存過程(stored procedure)是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它。

乙個儲存過程是乙個可程式設計的函式,它在資料庫中建立並儲存。它可以有sql語句和一些特殊的控制結構組成。當希望在不同的應用程式或平台上執行相同的函式,或者封裝特定功能時,儲存過程是非常有用的。資料庫中的儲存過程可以看做是對程式設計中物件導向方法的模擬。它允許控制資料的訪問方式

儲存過程增強了sql語言的功能和靈活性。儲存過程可以用流控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的運算。

儲存過程允許標準元件是程式設計。儲存過程被建立後,可以在程式中被多次呼叫,而不必重新編寫該儲存過程的sql語句。而且資料庫專業人員可以隨時對儲存過程進行修改,對應用程式源**毫無影響。

儲存過程能實現較快的執行速度。如果某一操作包含大量的transaction-sql**或分別被多次執行,那麼儲存過程要比批處理的執行速度快很多。因為儲存過程是預編譯的。在首次執行乙個儲存過程時查詢,優化器對其進行分析優化,並且給出最終被儲存在系統表中的執行計畫。而批處理的transaction-sql語句在每次執行時都要進行編譯和優化,速度相對要慢一些。

儲存過程能過減少網路流量。針對同乙個資料庫物件的操作(如查詢、修改),如果這一操作所涉及的transaction-sql語句被組織程儲存過程,那麼當在客戶計算機上呼叫該儲存過程時,網路中傳送的只是該呼叫語句,從而大大增加了網路流量並降低了網路負載。

儲存過程可被作為一種安全機制來充分利用。系統管理員通過執行某一儲存過程的許可權進行限制,能夠實現對相應的資料的訪問許可權的限制,避免了非授權使用者對資料的訪問,保證了資料的安全。

drop procedure

ifexists `proc`;

delimiter //

create

procedure `proc`(in a int, in b int, out c char(32), out

dchar

(32))

begin

declare

eint

(11);

declare str1 char(32);

declare str2 char(32);

if a = 0

then

set str1 = 'hello,this is str1';

endif; if b = 0

then

set str2 = 'hello,this is str2';

endif; if a != 0

and b != 0

then

set e = a + b;

endif; select str1

into c;

select str2

into d;

select e as sum;

end;

//delimiter ;

set @a = 0;

set @b = 0;

call proc(@a, @b, @c, @d);

select @c,@d;

out put

@c@d

hello,this is str1

hello,this is str2

mysql初學 儲存過程 游標

mysql初學 儲存過程 游標 drop procedure if exists test 若有儲存過程,刪除 delimiter create procedure test 建立儲存過程 begin 定義變數 declare done boolean default 0 declare code1...

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...