MySQL資料庫之儲存過程

2022-08-30 11:09:08 字數 1729 閱讀 5545

儲存過程簡單來說,就是為以後的使用而儲存的一條或多條mysql語句的集合。可將其視為批件,雖然它們的作用不僅限於批處理。在我看來, 儲存過程就是有業務邏輯和

流程的集合, 可以在儲存過程中建立表,更新資料, 刪除等等。

乙個簡單的儲存過程: 

create procedure porcedurename () 

begin 

select name from user; 

end;  

儲存過程用create procedure 建立, 業務邏輯和sql寫在begin和end之間。mysql中可用call porcedurename ();來呼叫過程。

刪除儲存過程

drop procedure if exists porcedurename; -- 沒有括號() 

在這裡,我們還要了解三個特別的字段in,out以及inout的區別:

1.引數in的使用(代表輸入,意思說你的引數要傳到存過過程的過程裡面去)

/**案例功能:求1-n的和

*/delimiter $

create procedure p1(in n int)

begin

declare total int default 0;

declare num int default 0;

while num < n do

set num:=num+1;

set total:=total+num;

end while;

select total;

end$

call p1(10)$

2.引數out的使用(代表往外輸出)

//這裡還要注意一點的就是我們的輸出引數一定要設定相應型別的初始,否則不管你怎麼計算得出的結果都為null值

/**案例功能:求1-n的和

*/create procedure p2(in n int,out total int)

begin

declare num int default 0;

set total:=0;

while num < n do

set num:=num+1;

set total:=total+num;

end while;

end$

這裡我們需要對第二個引數定義乙個變數名(更形象點就是你輸入乙個輸入型別的引數n,由輸出引數total往外發射輸出我們只需要定義乙個變數名來接收這個輸出值即可)

call p2(100,@sum)$   //這裡的@sum就是我定義用來接收處處total的值

select @sum$

總結in、out區別:

in:表示輸入乙個值,你需要乙個值,我給你乙個值

out:你往外輸出乙個值,你輸出的那個值我就拿乙個變數來接收你給我輸出的那個值

3.引數inout的使用(既能輸入乙個值又能傳出來乙個值)

/**功能:傳乙個年齡,自動讓年齡增長10歲

*/create procedure p3(inout age int)

begin

set age:=age+10;

end$

因此我們需要先設定乙個變數並初始化這個值,呼叫的時候直接傳這個變數即可。

set @currentage=8$

call p3(@currentage)$

select @currentage$

資料庫MySQL之儲存過程

儲存過程是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件。其在思想上與物件導向程式設計中函式的定義與呼叫一致,儲存過程只是sql語言維度上的封裝與運用。優點 1 簡化了儲存呼叫者的步驟,降低了儲存呼叫者的學習成本 2 隱藏了儲存過程的實際邏輯,易於商業內容的保密 3 降低了sql呼叫方...

mysql資料庫 儲存過程

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

資料庫之儲存過程

資料庫物件包括 表 索引 規圖 儲存過秳 觸發器 儲存過秳是資料庫重要的物件。是一組為了完成特定功能的sql詢句集。作用是 1.儲存過秳是在創造進行編譯的。之後每次執行儲存過程不需要重新編譯,而一般sql詢句需要每執行一次就編譯一次。2.當對資料庫迕行複雜操作時 如對多個表進行update,inse...