MySql資料庫——儲存過程

w39發表於2021-09-09

一,什麼是資料庫儲存過程?
儲存過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,經編譯後儲存在資料庫中,使用者透過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。
儲存過程(procedure)類似於C語言中的函式。
用來執行管理任務或應用複雜的業務規則。
儲存過程可以帶引數,也可以返回結果。
儲存過程可以包含資料操縱語句、變數、邏輯 控制語句等。
儲存過程是一組預編譯的SQL語句,它可以包含資料操縱語句、變數、邏輯控制語句等
儲存過程允許帶引數,引數分為:
輸入引數
輸出引數
其中,輸入引數可以有預設值。
二,為什麼要使用儲存過程??(儲存過程的好處/優點)
(1)實現了模組化程式設計。
(2)呼叫一次以後,相關資訊就儲存在記憶體中,下次呼叫時可以直接執行。
(3)儲存過程可以接受輸入引數並可以返回輸出值。
(4)儲存過程具有對資料庫立即訪問的功能。
(5)使用儲存過程可以加快程式的執行速度。
(6)使用儲存過程可以減少網路流量。
(7)使用儲存過程可以提高資料庫的安全性。
三,儲存過程的分類
(1)資料庫系統儲存過程:資料庫自帶
(2)使用者自定義資料庫儲存過程:由使用者根據需要自定義
四,MySql資料庫儲存過程
建立儲存過程:

create procedure 儲存過程名字()
begin
SQL語句/邏輯
end;

呼叫儲存過程:
call 儲存過程名字();

call 儲存過程名字(@引數1,@引數2,@引數3,...);
刪除儲存過程:
drop procedure if exists 儲存過程名字; - -這裡儲存過程名字後面沒有()
**五,舉個例子

  1. 建立資料庫:
    create database test;
  2. 使用資料庫:
    use test;
  3. 建立資料表student:
create table student(
    id int not null comment '學生id',
    name varchar(30) comment '學生姓名',
    chinese int(3) comment '語文成績',
    math int(3) comment '數學成績',
    enginsh int(3) comment '英語成績',
    count int(3) comment '總成績',
    primary key(id)
)Engine=InnoDB default charset=utf8 comment '學生成績表';

4 資料表的資料為:
圖片描述

  1. 建立帶引數的儲存過程:
create procedure mm(
out min int,
out max int,
out avg decimal(8,2)
)
begin
select MIN(chinese) into min from student;
select MAX(math) into max from student;
select AVG(count) into avg from student;
end;

圖片描述
6.呼叫儲存過程:
call mm(@min,@max,@avg);
該呼叫並沒有任何輸出, 只是把呼叫的結果賦給了呼叫時傳入的變數(@min, @avg, @max)。然後即可呼叫顯示該變數的值。
圖片描述

  1. 呼叫顯示儲存過程的值:
    select @min,@max,@avg;

8.使用in引數, 輸入一個學生id, 返回該學生的總成績
儲存過程程式碼:

create procedure getTotal(
in id int,
out total decimal(8,2)
)
begin
select SUM(s.count) from student s 
where s.id = id 
into total;
end;

9.呼叫儲存過程:

call getTotal(2, @total);
select @total;

圖片描述

至此就是一個簡單的MySql資料庫儲存過程。
由於慕課網編輯發手記的功能沒有做好,可能存在編輯排版問題,在此也希望慕課網改進!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/854/viewspace-2799270/,如需轉載,請註明出處,否則將追究法律責任。

相關文章