1. 程式人生 > >儲存過程筆記

儲存過程筆記

什麼是儲存過程

儲存過程(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;

刪除儲存過程時 注意不要帶小括號!!!