儲存過程簡介:
我們把若干條sql語句封裝起來,起個名字,----叫過程
我們把此過程儲存在資料庫中,-----儲存過程
儲存過程的優勢:
1、儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般sql 語句每執行一次就編譯一次,
所以使用儲存過程可提高資料庫執行速度。
2.當對資料庫進行複雜操作時(如對多個表進行update,insert,query,delete 時),可將此複雜操作用儲存過程封裝起來
與資料庫提供的事務處理結合一起使用。這些操作,如果用程式來完成,就變成了一條條的sql語句,可能要多次連線資料
庫。而換成儲存,只需要連線一次資料庫就可以了。
3.儲存過程可以重複使用,可減少資料庫開發人員的工作量。
4.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權。
建立語句:
delimiter $
create procedure procedurename()
begin
---sql語句
end$
檢視已有的儲存過程:
show procedure status$
呼叫儲存過程:
call p1()$
刪除儲存過程
drop procedure p2;
儲存過程中使用條件語句:
delimiter $;
create procedure p2(width int,height int)
begin
select concat("面積是", width * height) as area;
if width > height then
select "fat";
elseif height > width then
select "thin";
else
select "fang";
end if;
end$
#呼叫儲存過程,需要傳遞兩個引數
call p2(2,3)$
利用whlie迴圈求1-100的和:
delimiter $;
create procedure p3()
begin
declare total int default 0; #定義變數
declare num int default 0;
while num<100 do
set num := num +1;
set total := total + num;
end while;
select concat("1-100的和是",total);
end$
#呼叫
call p3()$
利用repeat迴圈來求1-100的和:
delimiter $;
create procedure p4()
begin
declare total int default 0;
declare i int default 0;
repeat
set i := i+1;
set total := total + i;
until i>=100 end repeat;
select total;
end$
case條件語句的用法:
delimiter $
create procedure p5()
begin
declare pos int default 0;
set pos := floor(5*rand());
case pos
when 1 then select "still flying";
when 2 then select "fall in sea";
when 3 then select "in the island";
else select "i don't know";
end case;
end$
用游標設定計數器來取出所有的資料:
#游標(cursor)是系統為使用者開設的乙個資料緩衝區,存放sql語句的執行結果。
delimiter $;
create procedure p6()
begin
declare row_gid int default 0;
declare row_num int default 0;
declare row_name varchar(20);
declare cnt int default 0;
declare getgoods cursor for select gid,num,name from goods; #宣告游標
select count(*) into cnt from goods;
open getgoods; #開啟游標
repeat
set cnt :=cnt-1;
fetch getgoods into row_gid,row_num,row_name;
select row_gid,row_name;
until cnt<=0 end repeat;
close getgoods; #關閉游標
end$
簡單SQL儲存過程例項
例項1 只返回單一記錄集的儲存過程。銀行存款表 bankmoney 的內容如下 iduserid money zhangsan 男wangwu 男zhangsan男 要求1 查詢表bankmoney的內容的儲存過程 create procedure sp query bankmoney assele...
簡單SQL儲存過程例項
例項1 僅僅返回單一記錄集的儲存過程。銀行存款表 bankmoney 的內容例如以下id userid money 001zhangsan 男 30 002 wangwu 男 50 003 zhangsan 男 40 要求1 查詢表bankmoney的內容的儲存過程 create procedure...
簡單SQL儲存過程例項
例項1 僅僅返回單一記錄集的儲存過程。銀行存款表 bankmoney 的內容例如以下id userid money 001zhangsan 男 30 002 wangwu 男 50 003 zhangsan 男 40 要求1 查詢表bankmoney的內容的儲存過程 create procedure...