mysql函数function的学习记录

    技术2026-03-13  5

    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 参数名定义成和字段名一模一样的了  错!

     

    Processed: 0.011, SQL: 9