在一些語言中,有乙個概念叫「過程」和「函式」,在php中,沒有過程,只有函式
把若干條sql語句封裝起來----過程
把此過程儲存在資料庫中-----儲存過程
儲存過程的建立語法:
create procedure procedurename()
begin
---sql 語句
end$
檢視已有的procedure命令-----show procedure status;
刪除:drop p1;
呼叫儲存過程---call procedure();
儲存過程是可以用來程式設計的,意味著可以使用變數,表示式,控制結構來完成複雜的功能
在儲存工程中,用declare宣告變數,在begin之後宣告
格式:declare 變數名 變數型別 【default 預設值】;
儲存過程中,
1.變數可以做sql語句中合法的運算,如加減乘除,注意的是運算的結果如何賦值給變數
格式:set 變數名 := expression(表示式)
set age := age+18;
2.if/else控制結構
格式:if condition then
statement
else
end if;
3.給儲存過程傳參儲存過程的括號裡,可以宣告引數
格式:【in/out/inout】 引數名 引數型別
例子:create procedure p5(width int ,height int)
begin
select concat("你的面積是",width*height) as area;
if width > height then
select "胖";
elseif width < height then
select "瘦";
else
select "方";
end if;
end$
呼叫p5:call p5(3,4);
4.迴圈
例子:1-100相加
create procedure p6()
begin
declare total int default 0;
declare num int default 0;
while num<=100 do-------注意最後是否能加到100
set total := total+num;
set num := num+1;
end while;
select total;
end$
求1到n的和---只需create procedure p6( in n int)改動p6這裡,把裡面的100替換為n即可
引數型別分為三種:
1 "in" argu is input type,which can get the value we input,是呼叫的時候傳進去的引數
2 "out" out是返回給我們資料,賦值給定義為out的變數
3 」inout「 就是既能傳進去乙個引數,也能輸出來的引數
create procedure p8( in n int , out total int)
begin
declare num int default 0;
set total := 0;
while num
set num := num+1;
set total := total+num;
end while;
end$
call p8(100,@sumary);-----@total是定義乙個變數
最後檢視sumary值即可
create procedure p9( inout age int)
begin
set age := age + 20;
end$
呼叫:呼叫之前先給變數賦值
set @curage=18;
call p9(@curage);
case結構的用法:
create procedure p10()
begin
declare pos int default 0;
pos = floor(5*rand());----0到5,floor取整,rand本身是取0到1
case pos
when 1 then select 'still flying';
when 2then select 'fall in sea';
else select 'i dont know';
end case;
end$
repeat 迴圈
語法:repeat
sql statement
.......
until condition end repeat;
例子create procedure p11()
begin
declare i int default 0;
repeat
select i;
set i :=i+1;
until i>10 end repeat;
end$
mysql儲存過程 MySQL儲存過程
在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...
mysql 儲存過程 mysql 儲存過程
建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...
mysql 儲存過程 MySQL儲存過程
目錄 儲存過程 簡介是一組為了完成特定功能的sql語句集合 比傳統sql速度更快 執行效率更高 儲存過程的優點 執行一次後,會將生成的二進位制 駐留緩衝區,提高執行效率 sql語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...