您的位置:首页 > 数据库 > MySQL

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

2010-09-10 17:07 363 查看
今天开始带参数的学习,这个参数貌似是很重要的哦,嘿嘿

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年的。。。。 伤心,,,学的是过时的东西。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: