MySQL 儲存過程 常用語法

2021-06-26 20:58:39 字數 2575 閱讀 6729

mysql 儲存過程是從 mysql 5.0 開始增加的新功能。儲存過程的優點有一籮筐。不過最主要的還是執行效率和sql **封裝。特別是 sql **封裝功能,如果沒有儲存過程,在外部程式訪問資料庫時(例如 php),要組織很多 sql 語句。特別是業務邏輯複雜的時候,一大堆的 sql 和條件夾雜在 php **中,讓人不寒而慄。現在有了 mysql 儲存過程,業務邏輯可以封裝儲存過程中,這樣不僅容易維護,而且執行效率也高。

一、mysql 建立儲存過程 

「pr_add」 是個簡單的 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 來替代。

call pr_add(10, null);

mysql常用語法 MySQL常用語法

更新資料 update 表名 set 健名 更改的值 where 建 刪除資料 delete from 表名 where 索引 create index 索引名稱 on 表名 鍵名 建立試圖 create view 檢視名 鍵,鍵 as select matchno,abs won lost fro...

mysql基本常用語法 mysql 常用語法

1.1.開啟 service mysql start 1.2.關閉 service mysql stop 1.3.重啟 service mysql restart 2.1.密碼明文 語法 mysql u使用者名稱 p使用者密碼 舉例 mysql uroot p123456 2.2.密碼密文 語法 m...

oracle儲存過程的常用語法

記錄一下,主要方便自己以後查詢 create or replace procedure sp test aa in varchar,bb in number default 0 is v pos varchar 50 v num number begin 字串查詢和替換 select substr ...