mysql 5.7 declare_MySQL-5.7 高阶语法及流程控制

本文介绍了MySQL 5.7的高级语法,包括BEGIN...END、LOOP、REPEAT、WHILE等流程控制语句,以及DECLARE声明变量、CASE条件选择、IF条件判断、ITERATE重新开始循环、LEAVE跳出循环、RETURN函数返回值等。通过实例演示了如何在存储过程中使用这些语法,展示了MySQL 5.7在流程控制和逻辑处理方面的强大功能。
摘要由CSDN通过智能技术生成

1.标签语句

[begin_label:] BEGIN

[statement_list]

END [end_label]

[begin_label:] LOOP

statement_list

END LOOP [end_label]

[begin_label:] REPEAT

statement_list

UNTIL search_condition

END REPEAT [end_label]

[begin_label:] WHILE search_condition DO

statement_list

END WHILE [end_label]

标签label可以加在begin...end语句以及loop,repeat和while语句上

语句中通过iterate和leave来控制流程,iterate表示返回指定标签位置,leave表示跳出标签

实例:

mysql> delimiter //

mysql> create procedure doiterate(in p1 int,out p2 int)

-> begin

-> label1:loop

-> set p1 = p1 + 1;

-> if p1 < 10 then iterate label1;end if;

-> leave label1;

-> end loop label1;

-> set p2=p1;

-> end//

Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> call doiterate(1,@a);

Query OK, 0 rows affected (0.00 sec)

mysql> select @a;

+------+

| @a |

+------+

| 10 |

+------+

1 row in set (0.00 sec)

mysql> call doiterate(5,@a);

Query OK, 0 rows affected (0.00 sec)

mysql> select @a;

+------+

| @a |

+------+

| 10 |

+------+

1 row in set (0.00 sec)

2.Declare语句

语法:

DECLARE var_name [, var_name] ... type [DEFAULT value]

Declare语句通常声明本地变量、游标、条件或者handler

Declare语句只允许出现在begin...end语句中而且必须出现在第一行

Declare的顺序也有要求,通常是先声明本地变量,再是游标,然后是条件和handler

使用default指定变量的默认值,如果没有指定默认值则为NULL

声明的变量和被引用的数据表中的字段要区分开

存储过程中的变量

本地变量可以通过declare语句声明

声明后的变量可以通过select...into var_list进行赋值,或者通过set语句赋值,或者通过定义游标并使用fetch...into var_list赋值

mysql> delimiter //

mysql> create procedure sp1(v_sid int)

-> begin

-> declare xname varchar(64) default 'bob';

-> declare xgender int;

-> select sname,gender into xname,xgender from students where sid=v_sid;

-> select xname,xgender;

-> end//

Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ;

mysql>

mysql> call sp1(1);

+--------+---------+

| xname | xgender |

+--------+---------+

| Andrew | 1 |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DECLARE_MYSQL_PLUGIN宏的使用是用于在MySQL插件开发中声明一个自定义的MySQL插件。该宏在mysql_com.h头文件中定义。使用该宏需要在宏之后填写自定义插件的st_mysql_plugin结构的各个成员,并通过mysql_declare_plugin_end宏结束这个数组。\[1\]这个宏的使用可以参考plugin/daemon_example/daemon_example.cc文件中的例子,该例子是一个动态MYSQL_DAEMON_PLUGIN类型的插件,通过在Makefile.am文件中添加-DMYSQL_DYNAMIC_PLUGIN来定义。\[2\]这个宏的使用在MySQL 8.0.18版本中引入了一个新的功能,即支持Hash Join算法。如果优化器选择没有索引的情况下,会直接使用Hash Join,这个功能比MariaDB实现的要好。\[3\] #### 引用[.reference_title] - *1* *2* [Mysql源代码分析(5): Plugin架构介绍--转载](https://blog.csdn.net/weixin_36205186/article/details/113225861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [mysql 5.7不支持declare_B站直播MySQL冲冲冲第一期文稿版](https://blog.csdn.net/weixin_39671374/article/details/111699497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值