MySQL 儲存過程的基本用法

2021-06-06 01:19:58 字數 2856 閱讀 4812

一、mysql 建立儲存過程

「pr_add」 是個簡單的 mysql 儲存過程,這個mysql 儲存過程有兩個 int 型別的輸入引數 「a」、「b」,返回這兩個引數的和。

drop procedure if exists pr_add;  

計算兩個數之和

create procedure pr_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;   

/*   

return c;  

不能在 mysql 儲存過程中使用。return 只能出現在函式中。

*/   

end;  

二、呼叫 mysql 儲存過程

call pr_add(10, 20);  

執行 mysql 儲存過程,儲存過程引數為 mysql 使用者變數。

set @a = 10;   

set @b = 20;   

call pr_add(@a, @b);  

三、mysql 儲存過程特點

建立 mysql 儲存過程的簡單語法為:

create procedure 儲存過程名字()   

(   

[in|out|inout] 引數 datatype   

)   

begin   

mysql 語句;   

end;  

mysql 儲存過程引數如果不顯式指定「in」、「out」、「inout」,則預設為「in」。習慣上,對於是「in」 的引數,我們都不會顯式指定。

1. mysql 儲存過程名字後面的「()」是必須的,即使沒有乙個引數,也需要「()」

2. mysql 儲存過程引數,不能在引數名稱前加「@」,如:「@a int」。下面的建立儲存過程語法在 mysql 中是錯誤的(在 sql server 中是正確的)。 mysql 儲存過程中的變數,不需要在變數名字前加「@」,雖然 mysql 客戶端使用者變數要加個「@」。

create procedure pr_add   

(   

@a int, -- 錯誤   

b int -- 正確   

)

3. mysql 儲存過程的引數不能指定預設值。

4. mysql 儲存過程不需要在 procedure body 前面加 「as」。而 sql server 儲存過程必須加 「as」 關鍵字。

create procedure pr_add   

(   

a int,   

b int   

)   

as -- 錯誤,mysql 不需要 「as」   

begin   

mysql statement ...;   

end;  

5. 如果 mysql 儲存過程中包含多條 mysql 語句,則需要 begin end 關鍵字。

create procedure pr_add   

(   

a int,   

b int   

)   

begin   

mysql statement 1 ...;   

mysql statement 2 ...;   

end;  

6. mysql 儲存過程中的每條語句的末尾,都要加上分號 「;」

...   

declare c int;   

if a is null then   

set a = 0;   

end if;   

...   

end;  

7. mysql 儲存過程中的注釋。

/*   

這是個   

多行 mysql 注釋。   

*/   

declare c int; -- 這是單行 mysql 注釋 (注意 -- 後至少要有乙個空格)   

if a is null then # 這也是個單行 mysql 注釋   

set a = 0;   

end if;   

...   

end;  

8. 不能在 mysql 儲存過程中使用 「return」 關鍵字。

set c = a + b;   

select c as sum;   

/*   

return c; -- 不能在 mysql 儲存過程中使用。return 只能出現在函式中。   

*/   

end;  

9. 呼叫 mysql 儲存過程時候,需要在過程名字後面加「()」,即使沒有乙個引數,也需要「()」

call pr_no_param();  

10. 因為 mysql 儲存過程引數沒有預設值,所以在呼叫 mysql 儲存過程時候,不能省略引數。可以用 null 來替代。

MySQL 儲存過程的基本用法

我們大家都知道mysql 儲存過程是從 mysql 5.0 開始逐漸增加新的功能。儲存過程在實際應用中也是優點大於缺點。不過最主要的還是執行效率和sql 封裝。特別是 sql 封裝功能,如果沒有儲存過程。在外部程式訪問資料庫時 例如 php 要組織很多 sql 語句。特別是業務邏輯複雜的時候,一大堆...

MySQL 儲存過程的基本用法

我們大家都知道mysql 儲存過程是從 mysql 5.0 開始逐漸增加新的功能。儲存過程在實際應用中也是優點大於缺點。不過最主要的還是執行效率和sql 封裝。特別是 sql 封裝功能,如果沒有儲存過程。在外部程式訪問資料庫時 例如 php 要組織很多 sql 語句。特別是業務邏輯複雜的時候,一大堆...

Mysql儲存過程的基本用法

我們大家都知道mysql 儲存過程是從 mysql 5.0 開始逐漸增加新的功能。儲存過程在實際應用中也是優點大於缺點。不過最主要的還是執行效率和sql 封裝。特別是 sql 封裝功能,如果沒有儲存過程。在外部程式訪問資料庫時 例如 php 要組織很多 sql 語句。特別是業務邏輯複雜的時候,一大堆...