mysq自定义存储过程和函数

学习资料:

官方文档:http://dev.mysql.com/doc/refman/5.0/en/tutorial.html

1.存储过程:

优点:业务逻辑封装在存储过程中,容易维护,执行效率也高。

缺点:不同的数据库功能函数等不一样,移植的时候需要改动。

create procedure 存储过程名字()
(
   [in|out|inout] 参数 datatype
)
begin
   MySQL 语句;
end;

栗子:

DELIMITER//
create procedure pr_add
(
   a int,
   b int
)
begin
   declare c int; //后加DEFAULT赋默认值,SET 赋值,存储过程的参数不能指定默认值
   if a is null then
      set a = 0;
   end if;
   if b is null then
      set b = 0;
   end if;
   set c = a + b;
   select c as sum;
END//

注意:与sqlserver不同的是,没有加DELIMITER// 和 END//无法执行

调用存储过程:

call pr_add(10, 20);

或者

set @a = 10;
set @b = 20;

call pr_add(@a, @b);

关键字:

IF THEN、ELSEIF、ELSE、END IF

name:LOOP 、END LOOP name

WHILE DO、END WHILE

REPEAT、UNTILL ... END REPEAT

2.自定义函数

mysql>DEMILITER $$

 

你可能感兴趣的:(mysq自定义存储过程和函数)