儲存過程筆記
什麼是儲存過程
儲存過程(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的一個重要物件。
建立儲存過程
create procedure name() –name 為儲存過程的名字,可根據需要修改. begin – begin 是儲存過程的開始標誌, select * from table_name; 在begin 和end 中間可填寫多個 select 語句,用分號隔開. end; end代表與之想對應的語句結束,相當於 右側的花括號, 一個簡單的儲存過程:
create procedure getage()
begin
select age from student;
end;
帶引數的儲存過程
create procedure getage( in mage int, out minage int) – in 輸入引數,即呼叫該函式時需要給出具體的值 mage 引數名 int 引數型別 – out 輸出函式, 在呼叫時要給他一個替代的名字, 用into 給out的引數賦值 begin select min(age) from students where age > mage into minage; end;
create procedure getage( in mage int, out minage int) begin select min(age) from students where age > mage into minage; end;
呼叫無參的儲存過程
call getage();
呼叫有參的儲存過程
call getage(11,@minage);
–此處 11 是給mage 賦的值 , @minage 是一個變數,把查詢到的結果存放在了@minage 中,執行完上述語句後再執行
select @minage
就會顯示查詢到 大於11歲的 學生的最小年齡. 一個@變數只能同時儲存一個值,不能儲存多個值.
儲存過程中的if語句
create procedure getsalarys( out total int, out osalary int) begin select sum(score) from scores into total; if total > 500 then select salary + salary*1.05 into osalary; end if ; end
IF 語句用來改變滿足條件的資料. IF 語句還支援 ELSEIF 和 ELSE 子句(前者還使用 THEN 子句,後者不使用)。
在儲存過程中宣告區域性變數
begin
declare total decimal(8,2);
select sum(score)
from studentscore
into total;
end
用declare 宣告區域性變數, total 為變數名, decimal(8,2)為變數型別,區域性宣告的變數同out變數一樣 可以用 into關鍵字來賦值,在儲存過程 中使用.
刪除儲存過程
drop procedure getage if exists;
刪除儲存過程時 注意不要帶小括號!!!