MySQL 基礎 儲存過程與函式

2021-10-01 08:03:53 字數 2237 閱讀 8274

儲存過程是一組預先編譯好的sql語句的集合,可理解成批處理語句。它的優點主要有以下幾點:

1、提高**的重用性;

2、簡化操作;

3、減少了編譯次數並且減少了和資料庫伺服器的連線次數,提高了效率。

delimiter 定界符

create procedure 儲存過程名(形參列表)

begin

儲存過程體(一組合法的sql語句)

end 定界符

但mysql實際儲存的儲存過程定義可能並沒有這麼簡單:

在使用儲存過程的時候,一定要注意引數列表中,每個形參的定義都包含三部分:

引數模式 (in、out、inout)、引數名、引數型別

例如:

in stuname varchar(10)
牢記引數模式分為三種:

in: 該模式引數僅可以作為輸入值使用。

out: 該模式引數僅可以作為輸出值使用,從儲存過程並沒有類似函式那樣的返回值,通過定義out 模式的引數,可以讓儲存過程攜帶返回值。

inout: 該模式引數既可以作為輸入,也可以作為輸出。

另外,如果儲存過程體僅有一句話,可以省略 begin 和 end 。儲存過程體的每條sql 語句要求必須以分號結尾

定義儲存過程需要設定乙個定界符,代表儲存過程定義完畢,一般使用 $ 、& 等特殊字元均可。

注意,儲存過程一旦建立,將無法修改(儲存體),如果希望修改,可以刪除後重建。刪除儲存過程的方法和 drop table 類似,只是將 table 關鍵字換為 procedure 即可。

檢視建立好的儲存過程可以使用:

show create procedure 儲存過程名;

call 儲存過程名(實參列表);

函式和儲存過程很類似,也是是一組預先編譯好的sql語句的集合,類似於批處理語句。提供了**重用性,簡化操作,同時減少了編譯次數,並且減少了和資料庫伺服器的連線次數,提供了效率。

但是和儲存過程也有所不同,他們的區別主要是:

儲存過程:可以沒有返回值,也可以有多個返回值,適合做批量插入,批量更新。

函式:有且僅有 1 個返回值,適合做處理資料後返回乙個結果。

create function 函式名(引數列表) returns 返回型別

begin

函式體end

引數列表中的每個引數包含兩部分:

引數名、引數型別

函式體必須要有 return 語句,並且與"函式簽名" 中的 returns 型別相對應,否則會報錯。一般將 return 語句放在函式體的最後,其他位置不建議。

函式體如果只有一句話,同樣可以像儲存過程一樣省略 begin 和 end 。

函式定義同樣需要 delimiter 設定定界符。

select 函式名(實參列表);

MySql儲存過程與儲存函式

在開發過程種常常會重複使用某些sql語句,為此mysql sdsd 先建立乙個表 create table user insert user username,password values jacklove qqqqqq insert user username,password values u...

MYSQL儲存過程與函式

二 儲存過程與儲存函式 語法如下 create procedure sp name proc parameter characteristic routine body create function sp name func parameter returns type characteristi...

MYSQL儲存過程與函式

二 儲存過程與儲存函式 語法如下 create procedure sp name proc parameter characteristic routine body create function sp name func parameter returns type characteristi...