MySQL的儲存過程

2021-07-27 05:45:44 字數 2680 閱讀 2706

儲存過程

是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(也可以無引數)來用執行它,乙個儲存過程是乙個可編譯的函式,它在資料庫中建立並儲存

優點

增強sql語言的功能和靈活性

儲存過程允許標準元件是程式設計

儲存過程能實現較快的執行速度

可以減少網路流量

儲存過程可被作為一種安全機制來充分利用

建立儲存過程的步驟

(1)選中乙個資料庫

(2)改變分隔符,不要讓;作為執行結束的標記,通常情況下,改變分隔符的命令為delimiter $$;

(3)建立儲存過程

(4)執行儲存過程

儲存過程體

儲存過程體中可以使用各種sql語句和過程式語句的組合,來封裝資料庫應用中複雜的業務邏輯和處理規則,以實現資料庫應用的靈活程式設計。

區域性變數

在儲存過程體中可以宣告區域性變數,用來儲存儲存過程體中臨時結果。

declare 區域性變數名稱 資料型別 [default 預設值];

區域性變數的注意事項

區域性變數只能在儲存過程體的begin…end語句塊中宣告。

區域性變數必須在儲存過程體的開頭處宣告。

區域性變數的作用範圍僅限於宣告它的begin..end語句塊,其他語句塊中的語句不可以使用它。

區域性變數不同於使用者變數,兩者區別:區域性變數宣告時,在其前面沒有使用@符號,並且它只能在begin..end語句塊中使用;而使用者變數在宣告時,會在其名稱前面使用@符號,同時已宣告的使用者變數存在於整個會話之中。

set語句

使用set語句為區域性變數賦值

set 區域性變數名稱=值;

select … into 語句

把選定列的值直接儲存到區域性變數中,語法格式

select col_name[,…] into var_name[,…] table_expr ;

col_name:用於指定列名 

var_name:用於指定要賦值的變數名 

table_expr:表示select語句中的from字句及後面的語法部分

呼叫儲存過程

call sp_name([parameter[,…]]); 

sp_name被呼叫儲存過程的名稱

parameter:指定呼叫儲存過程所要使用的引數。

流程控制語句

if語句

if 條件 then 

表示式;

elseif 條件2 then

表示式1;

...else

表示式2;

end if;

case語句

case

when      then 

when then 

....

else

end case;

儲存過程的引數

in:輸入引數

表示該引數的值必須在呼叫儲存過程之前指定,在儲存過程修改的值不能被返回

out:輸出引數

該值可以在儲存過程內部改變,並可以返回

inout:輸入輸出引數

該值可在呼叫時指定,並可修改和返回。

帶in的引數

create procedure p_username(in in_name varchar(20))

begin

if in_name is null or in_name='' " then

select * from t_user;

else

select * from t_user where user_name like in_name;

end if;

end

呼叫:call p_username('hanlei')

帶out 的引數

create procedure p_username(in in_name varchar(20),out in_int int)

begin 

if in_name is null or in_name='' " then 

select * from t_user; 

else

select * from t_user where user_name like in_name; 

end if; 

select found_rows() into p_int; 

end 

呼叫 :call p_username('lei%',@num);

select @num;

帶inout的引數

create procedure p_inout(inout p_num int) 

begin 

set p_num=p_num*10;

end呼叫:set @num=10;

call p_inout(@num);

select @num;

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

mysql 儲存過程 MySQL儲存過程

目錄 儲存過程 簡介是一組為了完成特定功能的sql語句集合 比傳統sql速度更快 執行效率更高 儲存過程的優點 執行一次後,會將生成的二進位制 駐留緩衝區,提高執行效率 sql語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...