含義:一組預先編譯好的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 提高了資料處理的效率 變數 系統變數 全域性變數 會話變數 自定義變數 使用者變數 區域性變數 一 系統變數 說明 變數由系統提供,不是使...