mysql 儲存過程

2021-06-29 13:07:13 字數 2649 閱讀 1121

在一些語言中,有乙個概念叫「過程」和「函式」,在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語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...