Mysql 之儲存過程

2021-08-27 10:17:15 字數 2614 閱讀 1209

[b]簡介:[/b]

mysql 儲存過程是從 mysql 5.0 開始逐漸增加新的功能。儲存過程可以提高資料庫的處理速度,同時也可以提高資料庫程式設計的靈活性。

[b]優點:[/b]

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

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

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

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

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

[b]建立語法:[/b]

create procedure 儲存過程名字()

(

[in|out|inout] 引數 datatype

)

begin

sql語句;

end;

[b]例項:[/b]

delimiter $$

alter procedure `pro_add`

(a int,b int)

begin

declare c int;

if a is null then

set a = 0;

end if;

if b is null then

set b = 0;

end if;

set c = a + b;

select c as sum;

end$$

delimiter ;

[color=red]說明:mysql中預設的語句結束符為分號(;)。儲存過程中的sql語句需要分號來結束。為了避免衝突,首先用"delimiter &&"將mysql的結束符設定為&&。最後再用"delimiter ;"來將結束符恢復成分號,否則會出現不能編譯的問題。

[/color]

[b]儲存過程呼叫:[/b]

call pro_add(10,20);

output : sum

30

[b]儲存過程修改[/b]

alter sp_name [characteristic ...]

characteristic:

| sql security

| comment 'string'

[color=red]說明:看mysql官方文件針對此修改儲存過程語法,只能改名字和定義不能改裡面的內容。需要刪除重新建立。[/color]

[b]例項:[/b]

delimiter $$

drop procedure if exists `pro_add`$$

create procedure `pro_add`(a int,b int)

begin

declare c int;

if a is null then

set a = 0;

end if;

if b is null then

set b = 0;

end if;

set c = a + b;

select c as sum;

end$$

delimiter ;

[b]儲存過程刪除:[/b]

drop [if exists] sp_name

[b]例項:[/b]

drop procedure if exists `pro_add`;

或 drop procedure if exists pro_add;

" 非 "

drop procedure if exists 'pro_add';

[color=red]

說明: if exists 子句是乙個mysql的擴充套件。如果程式或函式不存在,它防止發生錯誤。產生乙個可以用show warnings檢視的警告。

[/color]

mysql之儲存過程

mysql之儲存過程 儲存過程 注意 儲存過程名稱後面必須加括號,哪怕該儲存過程沒有引數傳遞 1.基本語法 create procedure sp name begin end修改命令結束符 delimiter 例 建立procedure create procedure myproce begin...

Mysql之儲存過程

1.進入到資料庫中檢視 是否有相關的儲存過程資料 show procedure status where db test 2.建立簡單的儲存過程 create procedure hi select hello 3.呼叫儲存過程 call hi 事例 三 mysql 儲存過程特點 建立 mysql ...

MySQL 儲存程式之儲存過程

1.儲存引擎簡介是mysql的核心,一組軟體包括快取軟體,語法語義分析,解析的軟體等,不同的儲存引擎提供不同的儲存機制,索引技巧,鎖定水平等功能。可以根據不同的功能來設定不同的儲存引擎。innodb 事務性資料庫的首選,執行安全性資料庫,行鎖定和外來鍵。顯示支援的儲存引擎 show engines ...