MySQL儲存過程

2021-07-22 02:53:03 字數 2881 閱讀 1913

當成功輸入sql命令以後,mysql引擎會首先對輸入的命令進行語法分析,語法正確的話將編譯成mysql引擎可以識別的命令,最後開始執行,並且把執行結果返回給客戶端。

儲存過程是sql語句和控制語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理,儲存過程採用預編譯,即第一次編譯之後,會把結果存於記憶體中供下次呼叫。儲存過程省略了語法分析和編譯的過程,可以實現mysql命令執行流程的簡化。

語法結構分析

create

[definer = ] //定義時的使用者,若是不寫就預設為當前使用者

procedure sp_name([proc_parameter[,...]]) //可以帶0到多個引數

[characteristic ...]routine_body

//其中引數

proc_parameter:

[in | out | inout]param_name type

引數特性

comment 'string'

||sql security

過程體注意事項

call sp_name([parameter[,...]])     //帶引數的儲存過程的呼叫

call sp_name[()] //不帶引數的儲存過程呼叫

示例:

// 若sp1為不帶引數的儲存過程,則可以這樣呼叫

call sp1;

call sp1();

alter procedure

sp_name [characteristic]

comment 'string'

||sql

security

修改儲存過程只能修改簡單的特性,並不能修改過程體。

drop procedure [if

exists] sp_name

示例:

mysql> create

procedure

sp1()

select

version

();

示例:

delimiter //                //修改定界符為//

create

procedure

removeuserbyid

(in p_id int unsigned)

begin

delete

from

users

where

id = p_id;

end// //結束

delimiter ; //修改定界符為;

call removeuserbyid(20); // 呼叫該儲存過程

示例:

delimiter //

create

procedure

removeruserandreturnusername

(in p_id int unsigned,out usernums int unsigned)

begin

delete

from

users

where

id = p_id;

select count(id) from users into usernums; //語句1

end//

delimiter ;

call removeruserandreturnusername(27,@nums); //語句2

select @nums; //語句3

說明:示例:

delimiter //

create

procedure

removeuserbyageandreturninfos

(in p_age smallint unsigned, out deleteusers smallint unsigned, out usercounts smallint unsigned)

begin

delete

from

users

where

where

age = p_age;

select row_count() into deleteusers; //返回增加、更新、刪除被影響的記錄數

select count(id) from users into usercounts; //剩餘的記錄數

end//

delimiter ;

call removeuserbyageandreturninfos(23, @a, @b);

select @a, @b;

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語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...