Mysql儲存過程 變數,條件,迴圈語句用法

Eternallyc發表於2018-06-26

資料庫

刪除儲存過程

drop procedure 儲存過程名

 

儲存過程的下面程式碼是列印到控制檯

select num;

 

檢視所有資料庫的儲存過程

show procedure status;

 

檢視儲存過程建立的原始碼

show create procedure 儲存過程名

 

 

1、變數的 宣告

Declare 宣告區域性變數

begin end 裡面

在符合語句的開頭,在任何其他語句之前

Declare 變數名 型別[default value];

 

例題:

Declare a int default 5;

 

Delimiter $$

Create procedure selectall()

begin

Declare a int default 5;

select a;

end$$

 

call selectall()$$

2、set的用法

set 變數名 = 表示式的值

 

例題

Delimiter $$

create procedure p1()

begin

declare a int;

set a = (select sno from student where sno = 201502);

select a;

end$$

 

call p1()$$

 

 

Delimiter $$

create procedure p3()

begin

declare a char;

set a = (select department from student where sno = 201502);

select a;

end$$

 

call p3()$$

 

 

課堂練習

1)建表T(S1,S2)

delimiter ;

create table T

(

S1 int,

S2 int

);

2)定義一個儲存過程,宣告兩個變數a,b,並且設定a,b的初始值為5,將a的值插入表T的s1列,並且當S1>=b,求出S1*A的結果

 

delimiter $$

Create procedure tselect()

begin

declare a,b int default 5;

insert into T(S1) values(a);

select S1*a from T where S1>=b;

end$$

call tselect()$$

 

3)條件語句

語法:

IF 條件判斷

THEN 執行語句

ELSE IF 條件判斷

THEN 執行語句

ELSE 執行語句

END IF;

 

 

課堂練習 :

輸入一個數,對num進行判斷,

如果num=-1,往表T1中插入資料(num,666);

0 往表T1中插入資料(num,num+1)

1 往表T1中插入資料(num,num+2)

其他 往表T1中插入資料(num,num*5)

 

 

首先

建立表

delimiter ;

create table T1(num int);

 

建立儲存過程

delimiter $$

create procedure insert_t1(in num1 int)

begin

if num1=-1 then

insert into t1(num) values(666);

elseif num1=0 then

insert into t1(num) values(num1+1);

Elseif num1=1 then

insert into t1(num) values(num1+2);

else insert into t1(num) values(num1*5);

end if;

end$$

call insert_t1(1)$$

 

課堂練習二

輸入0,列印t1表

如果是其他,告訴使用者,你的輸入有誤

 

delimiter $$

create procedure insert_t1(in num1 int)

begin

if num1=0 then

select * from t1;

else select '您的輸入有誤';

end if;

end$$

call insert_t1(1)$$

 

 

A、case 語句

case變數

when 值 then 語句

ELSE 語句

 

delimiter $$

create procedure p5(in num int)

begin

case num

when 0 then select * from student order by sno asc;

when 1 then select * from student order by sno desc;

else select '您的輸入有誤';

end case;

end$$

call p5(5)$$

 

// 查詢JAVA的API關於呼叫儲存過程

輸入引數

輸入引數

DEMO

4)迴圈

WHILE END WHILE

標準語法:

WHILE條件判斷 DO 語句

END WHILE;

 

求出1+2+.....+100

 

delimiter $$

create procedure p6()

begin

Declare tem int default 1;

Declare sum int default 0;

while tem<=100 do

set sum=sum+tem;

set tem = tem+1;

End while;

select sum;

end$$

 

repeat end repeat

本身repeat util是do while的形式,意義不同,表示 一直迴圈到滿足until後面的條件為止

標準格式;

REPEAT

語句;

until 判斷條件

end repeat;

 

求出1+2+.....+100

 

delimiter $$

create procedure p7()

begin

Declare tem int default 1;

Declare sum int default 0;

repeat

set sum=sum+tem;

set tem = tem+1;

until tem>100

end repeat;

select sum;

end$$

call p7()$$

 

 

 

LOOP END LOOP

標籤:

語法:

標籤名稱:LOOP

語句;

LEAVE 標籤名稱;

END LOOP;

 

注意 loop 一般要和一個標籤(此處為label,名稱可以自定義,不過要保證前後一致)一起使用,且在 loop 迴圈中一定要有一個判斷條件,能夠滿足在一定的條件下跳出 loop 迴圈(即 leave )!

 

 

求出1+2+.....+100

 

delimiter $$

create procedure p8()

begin

Declare tem int default 1;

Declare sum int default 0;

label:loop

set sum=sum+tem;

set tem = tem+1;

if tem>100 then leave label;

end if;

end loop label;

select sum;

end$$

call p8()$$

 

 

 

 

相關文章