MySQL 基礎 儲存過程和函式

2022-08-16 02:15:17 字數 3816 閱讀 2891

含義:一組預先編譯好的sql語句的集合,理解成批處理語句

1、提高**的重用性

2、簡化操作

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

區別: 儲存過程:可以有0個返回,也可以有多個返回,適合做批量插入、批量更新

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

語法

建立過程語法:

create

procedure

儲存過程名(引數列表)

begin

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

end說明:

1、引數列表包含三部分

引數模式 引數名 引數型別

舉例:in name varchar(20

) 引數模式:

in:輸入引數

out:輸出引數

inout:輸入輸出引數

2、儲存過程體中僅有一句話,則可以省略begin end

3、儲存過程體中的每條sql語句的結尾要求必須加分號

4、儲存過程的結尾可以使用 delimiter 設定結束標記

語法:delimiter 結束標記

舉例:delimiter $呼叫過程語法:

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

說明: 呼叫in模式引數:

call 儲存過程名(

@變數);

呼叫out模式引數:

set@變數

; call 儲存過程名(

@變數);

select

@變數;

呼叫inout模式引數:

set@變數

=值;

call 儲存過程名(

@變數);

select

@變數;檢視過程語法:

show

create

procedure

儲存過程名;刪除過程語法:

drop

procedure 儲存過程名;

案例

1、建立帶in模式引數的儲存過程# 設定結束標記

delimiter $

# 建立

create

procedure pro1(in username varchar(20), in password varchar(20

))begin

declare result int

default

0; # 宣告並初始化

select

count(*) into

result # 賦值

from `user` u where u.username =

username

and u.password =

password;

select

if(result>

0,'登入成功

','登入失敗

'); # 使用

end$

# 呼叫

call pro1(

'admin

', '

admin')$

2、建立帶out模式引數的儲存過程# 設定結束標記

delimiter $

# 建立

create

procedure pro2(in id int, out username varchar(20), out password varchar(20

))begin

select u.username,u.password into

username,password

from `user` u where u.id =

id;end

$# 呼叫

call pro2(

1001, @username, @password

)$select

@username,@password

$3、建立帶inout模式引數的儲存過程# 設定結束標記

delimiter $

# 建立

create

procedure pro3(inout a int ,inout b int

)begin

set a = a*2;

set b = b*2;

end$

#呼叫set@m=

10$set@n=20

$call pro3(

@m,@n

)$select

@m,@n$

語法

建立函式語法:

create

function 函式名(引數列表) returns

返回型別

begin

函式體

end說明:

1、引數列表包含兩部分

引數名 引數型別

2、函式體必須有return語句,如果沒有會報錯

3、函式體中僅有一句話,則可以省略begin end

4、函式體中的每條sql語句的結尾要求必須加分號

5、函式的結尾可以使用 delimiter 設定結束標記

語法:delimiter 結束標記

舉例:delimiter $呼叫函式語法:

select

函式名(引數列表)檢視函式語法:

show

create

function

函式名;刪除函式語法:

drop

function 函式名;

案例

1、無參返回# 設定結束標記

delimiter $

# 建立

create

function fun1() returns

intbegin

declare c int

default0;

select

count(*) into

c

from `user

`;

return

c;end

$# 呼叫

select

fun1()$

2、有參返回# 設定結束標記

delimiter $

# 建立

create

function fun2(username varchar(20)) returns

varchar(20

)begin

set@password='

123'

;

select u.password into

@password

from `user` u where u.username =

username;

return

@password

;end

$# 呼叫

select fun2('

admin

')$

mysql 過程和函式 MySQL 儲存過程和函式

變數 系統變數 變數由系統提供,不是使用者自定義的,屬於伺服器層面 全域性變數 會話變數 如果是全域性級別,則需要加global,如果是會話級別,則需要加session,如果不寫,則預設是會話 檢視全域性變數 show global variables show global variablesli...

MySQL儲存過程和儲存函式

儲存過程和儲存函式 mysql的儲存過程 stored procedure 和函式 stored function 統稱為stored routines。1.儲存過程和函式的區別 函式只能通過return語句返回單個值或者表物件。而儲存過程不允許執行return,但是通過out引數返回多個值。函式是...

MySQL 基礎篇 十 儲存過程和函式

儲存過程和函式是事先經過編譯並儲存在資料庫中的一段sql語句的 集合。使用好處 1 簡化應用開發人員的很多任務作 2 減少資料在資料庫和應用伺服器之間的傳輸 3 提高了資料處理的效率 變數 系統變數 全域性變數 會話變數 自定義變數 使用者變數 區域性變數 一 系統變數 說明 變數由系統提供,不是使...