mysql存储过程学习随笔(2)

今天开始带参数的学习,这个参数貌似是很重要的哦,嘿嘿

create procedure p5(in p int) set @x=p;

然后执行这个存储过程

call p5(1231231);

这样就在用户变量中存储了一个@a的用户变量

select @a  ;  嘿嘿,看会有什么结果?

 

 

同样,看看输出是则么输出的

create procedure p6(out p int) set p=-5;

然后执行他

call p6(@y);

然后

select @y;看看什么结果,嘿嘿

 

这个输出值就是靠用户变量进行传参的。

 

DECLARE  定义变量 

DECLARE  变量名 类型 DEFAULT 默认值;;

 

一直觉得这个

begin 和end 很神奇,,, 

剥去她的外衣才发现,只是个大括号的意思。。。。。

需要注意的是定义域,这个定义域和java的定义域基本一样。但是内外定义与的变量名可以相同。。。。

 

 

下面应该是逻辑结构了吧。。

判断

IF  abc = 0 THEN

    DO SOMETHING.....

ELSE

    DO OTHER THINGS......

END IF

 

分支

CASE variable1

  WHEN 0 THEN   

DO SOMETHING... 

  WHEN 1 THEN 

DO SOMETHING..

  ELSE

DO SOMETING....

  END CASE

 

循环

WHILE v < 5 DO

  DO SOMETHING....

END WHILE;

 

REPEAT       --大概类似于do while?

DO SOMETHING...

UNTIL v >= 5 ;

END REPEAT;

 

 

loop_label: LOOP      --标号。。

DO SOMETHING...

SET v = v + 1;

   IF v >= 5 THEN

     LEAVE loop_label;

   END IF;

END LOOP;

 

CREATE PROCEDURE p17 ()

label_1: BEGIN

label_2: WHILE 0 = 1 DO

LEAVE label_2;

END WHILE;

label_3: REPEAT

LEAVE label_3;

UNTIL 0 =0

END REPEAT;

label_4: LOOP

LEAVE label_4;

END LOOP;

END; 

 

标号结束符(可选,但是为了可读性,可能的话,还是加上为好)

 

CREATE PROCEDURE p18 ()

label_1: BEGIN

label_2: WHILE 0 = 1 DO

LEAVE label_2;

END WHILE label_2;

label_3: REPEAT

LEAVE label_3;

UNTIL 0 =0

END REPEAT label_3 ;

label_4: LOOP

LEAVE label_4;

END LOOP label_4 ;

END label_1 ;

 

还有游标,以及函数。。。。

据说函数不支持对表的操作。。。  汗死。。郁闷死。。

 

这本书。。很失落。。。。。。 2004年的。。。。 伤心,,,学的是过时的东西。。。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(java,mysql,存储)