mysql函数function的学习记录

10 一个很少的学习存储过程和函数的博客:

https://www.cnblogs.com/Honeycomb/p/10672659.html

11继续上一个博客,关于函数部分

mysql> delimiter //
mysql> CREATE FUNCTION hello (s CHAR(20))
    -> RETURNS CHAR(50) -- 返回类型定义
    -> RETURN CONCAT('Hello, ',s,'!');  -- 实际返回内容
    -> //
Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ;
mysql> select hello('a');
+------------+
| hello('a') |
+------------+
| Hello, a!  |
+------------+


mysql> select hello(id) from users;
+--------------+
| hello(id)    |
+--------------+
| Hello, 1!    |
| Hello, 3!    |

以上就是一个简单的函数的使用,它的作用就像mysql中定义的一个工具类方法

 

不管是存储过程还是函数的定义,使用上的区别:

1 规范来看,核心代码都要加上 begin  ...end

2 在调用上: call test_proc();     select  test_func();

3 在传参上,存储过程是可以有入参有回参  函数是一定要定义回参,这也是它的意义所在

从这里也可以看出,他俩的最大不同,

  存储过程,重在过程,在过程中实现自身价值

  函数:就重在通过某种模块化的方式,去做一件事请

12 关于如何将值进行设置:

  select  a,b into _a,_b from user where id=_id; -- 如果只有一条数据返回的话,这样赋值是ok的

 如果返回多条的话,就要用到cursor 游标,去做循环遍历了,使用fetch … into vv

13 关于循环:

 1 repeat

 2 while  它和repeat 很像,只看第一次遍历要不要判断条件

 3 loop 有一个label,  leave是跳出循环,iterate是继续下一次循环,对比java的 break和continue;

 4 关于declare有自己的要求:

Declare语句通常用来声明本地变量、游标、条件或者handler
Declare语句只允许出现在begin … end语句中而且必须出现在第一行
Declare的顺序也有要求,通常是先声明本地变量,再是游标,然后是条件和handler

5 提醒!!!在定义变量时,小心犯错:

  1使用关键字

 2 参数名定义成和字段名一模一样的了  错!

 

你可能感兴趣的:(mysql)