翼度科技»论坛 编程开发 mysql 查看内容

MySQL存储过程

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
基本构造
  1. delimiter $$  #定义终止符,可据习惯更换
  2. CREATE PROCEDURE method_name()                #创建方法
  3. BEGIN                #方法体开始
  4. SELECT 'code';                #方法体,写SQL语句
  5. END                #方法体终止
  6. $$                #存储过程终止
复制代码
基本语法

1.定义终止符
  1. delimiter $$        #$$为自定义符,可据习惯更换
复制代码
2.创建方法
  1. CREATE PROCEDURE method()
复制代码
3.方法体开始
  1. BEGIN
复制代码
4.方法体终止
  1. END
复制代码
5.调用方法
  1. CALL method_name();
复制代码
6.格式化方法
  1. drop PROCEDURE method_name();
复制代码
7.变量及赋值

1.局部变量

用户自定义,在当前 begin-end 块中有效

  • 声明变量
    1. declare var_name type [default var_value];
    复制代码
    例:
    1. declare nickname varchar(32);
    复制代码
2.用户变量

用户自定义,在当前会话(连接)中有效,类似JAVA中的全局变量

  • 不需提前声明,使用即声明
    1. @var_name
    复制代码
    例:
    1. set @var_name = 'var_name';
    复制代码
3.变量赋值


  • set 赋值
    1. set
    复制代码
    例:
    1. set var_name = 'var_name';
    复制代码
  • into 赋值
    可在其他 sql 语句中临时赋值,且可以同时给多个临时变量
    1. into
    复制代码
    例:
    1. select var_name1 into @var_name2 from tables_name
    复制代码
8.入参出参


  • 入参
    1. in param_name type
    复制代码
  • 出参
    类似 JAVA 中返回值
    1. out param_name type
    复制代码
    例:
    1. delimiter $$
    2. CREATE PROCEDURE method (
    3.         IN parameter1 VARCHAR ( 32 ),OUT parameter2 VARCHAR ( 32 )
    4. BEGIN
    5.                 SELECT
    6.                         parameter2 INTO @parameter2
    7.                 FROM
    8.                         table_name
    9.                 WHERE
    10.                         parameter1 = parameter1;
    11. END $$
    12. CALL method ( '参数1', @parameter2 ) $$
    13. SELECT @parameter2 $$
    复制代码
  • inout 即可入参也可出参
    1. inout param_name type
    复制代码
9.判断

1.IF
  1. IF search_condition THEN statement_list
  2.         [ELSEIF search_condition THEN statement_list]
  3.         {ELSE statement_list}
  4. END IF
复制代码
2.CASE
  1. CASE case_value
  2.         WHEN when_value THEN statement_list
  3.         [WHEN when_value THEN statement_list]
  4.         ...
  5.         [ELSE statement_list]
  6. END CASE
复制代码
  1. CASE
  2.         WHEN search_condition THEN statement_list
  3.         [WHEN search_condition THEN statement_list]
  4.         ...
  5.         [ELSE statement_list]
  6. END CASE
复制代码
10.循环

1.LOOP
  1. [label: ]LOOP
  2.         statement_list
  3.         IF exit_condition THEN
  4.                 LEAVE label;
  5.         END IF;
  6. END LOOP label;
复制代码
2.REPEAT

类似 JAVA 中的 do-while
  1. [label: ]REPEAT
  2.         statement_list
  3. UNTIL search_condition        #直到...为止
  4. END REPEAT;
复制代码
3.WHILE
  1. [label: ]WHILE search_condition DO
  2.         statement_list
  3. END WHILE;
复制代码
11.循环跳出、继续

1.LEAVE

跳出循环,类似 JAVA 中的 break
  1. LEAVE label
复制代码
2.ITERATE

继续本次循环
  1. ITERATE label
复制代码
常用函数

1.字符串拼接
  1. CONCAT(str1,str2,...)
复制代码
2.取时间差
  1. TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
复制代码
取 datetime_expr1 - datetime_expr1 的差值,unit 为单位

来源:https://www.cnblogs.com/V-Notes/p/17271130.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具