mysql(十)条件语句、循环语句、动态执行SQL语句
MySQL数据库-条件语句、循环语句、动态执行SQL语句
1、if条件语句
delimiter \\ CREATE PROCEDURE proc_if () BEGINdeclare i int default 0;if i = 1 THENSELECT 1;ELSEIF i = 2 THENSELECT 2;ELSESELECT 7;END IF;END\\ delimiter ;
2、循环语句
while循环
delimiter \\ CREATE PROCEDURE proc_while () BEGINDECLARE num INT ;SET num = 0 ;WHILE num < 10 DOSELECTnum ;SET num = num + 1 ;END WHILE ;END\\ delimiter ;
repeat循环
delimiter \\ CREATE PROCEDURE proc_repeat () BEGINDECLARE i INT ;SET i = 0 ;repeatselect i;set i = i + 1;until i >= 5end repeat;END\\ delimiter ;
loop循环
iterate loop_label退出循环
BEGINdeclare i int default 0;loop_label: loopset i=i+1;if i<8 theniterate loop_label;end if;if i>=10 thenleave loop_label;end if;select i;end loop loop_label;END
3、动态执行SQL语句
动态执行SQL语句,也就是执行一个存储过程来动态执行SQL语句
举例:有这样一张表
写一个存储过程无参,获取表里id大于11的数据
PREPARE prod FROM存储过程里将字符串解析为sql语句执行,后面跟字符串类型的sql语句
EXECUTE prod USING替换sql语句中的占位符,后面跟要替换占位符的、占位符变量,(sql语句中的占位符是?号)
delimiter $$ DROP PROCEDURE IF EXISTS proc_sql $$ -- 判断proc_sql存储过程存在删除 CREATE PROCEDURE proc_sql () -- 创建proc_sql存储过程 BEGINdeclare p1 int; -- 设置p1变量set p1 = 11; -- 赋值p1变量等于11set @p1 = p1; -- 赋值字符串占位符变量等于p1PREPARE prod FROM 'select * from tb2 where nid > ?'; -- 解析字符串为sql语句EXECUTE prod USING @p1; -- 执行sql语句,并且用占位符变量替换sql语句中的?号DEALLOCATE prepare prod; -- 释放解析和执行sql语句END $$ delimiter ;
执行存储过程,动态执行sql语句
CALL proc_sql(); -- 执行存储过程,动态执行sql语句
写一个存储过程有参,动态传参获取数据
delimiter $$ DROP PROCEDURE IF EXISTS proc_sql $$ -- 判断proc_sql存储过程存在删除 CREATE PROCEDURE proc_sql ( -- 创建proc_sql存储过程in zfchsql CHAR(90), -- zfchsql接收字符串最大90字符,接收sql语句in shuzi INT(20) -- shuzi接收整数类型,最大20字符,接收一个id数 ) BEGIN-- 因为解析字符串为sql语句,和替换sql语句的占位符,需要用户变量,也就是有@的变量,所以需要重新赋值成用户变量SET @zfchsql = zfchsql;SET @shuzi = shuzi;PREPARE prod FROM @zfchsql; -- 将接收到的字符串解析为sql语句EXECUTE prod USING @shuzi; -- 将接收到的整数,替换sql语句中的?号占位符DEALLOCATE prepare prod; -- 释放解析和执行的sql语句END $$ delimiter ;
传入参数动态执行sql语句
CALL proc_sql('select * from usr where id > ?',5); -- 传入参数动态执行sql语句
重点:动态执行sql语句,可以防止sql注入,
CALL proc_sql('select * from usr -- where id > ?',5); -- 传入参数动态执行sql语句
mysql(十)条件语句、循环语句、动态执行SQL语句相关推荐
- mysql函数 动态语句_自定义函数动态执行SQL语句
Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者. DDL 和 DML Sql代码 收藏代码 /*** DDL ***/ begin EX ...
- mysql带参数的sql_MySql存储过程是带参数的存储过程(动态执行SQL语句)
下文介绍的MySql存储过程是带参数的存储过程(动态执行SQL语句),该MySql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有调用方式: call GetUsersDynam ...
- oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数
oracle中有没有可动态执行sql语句的函数 关注:233 答案:2 手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...
- mysql sql语句 参数化_C#参数化执行SQL语句,防止破绽攻击本文以MySql为例【20151108非查询操作】_mysql...
C#参数化执行SQL语句,防止漏洞攻击本文以mysql为例[20151108非查询操作] 为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果 ...
- mysql创建函数执行sql语句_MySQL mysql_query 函数执行SQL语句
mysql_query()函数 PHP MySQL 函数库中,mysql_query() 函数用于向 MySQL 发送并执行 SQL 语句. 对于没有数据返回结果集的 SQL ,如 UPDATE.DE ...
- mysql写定时执行语句_mysql实现定时执行sql语句
mysql实现定时执行SQL语句需要用到Event 1.检查event事件是否开启 show variables like '%sche%'; 1)如果Value值为OFF,则需要开启.需要超级权限 ...
- java代码执行mysql语句_三种执行SQL语句的的JAVA代码
问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...
- mysql 反斜杠 转义_MySQL中执行sql语句反斜杠需要进行转义
最近在执行一个sql备份的还原后,发现系统的部分路径找不到,于是开始debug,最后发现,是由于备份的sql语句在还原时,反斜杠(\)被mysql吃掉了.本文对反斜杠和顺斜杠进行了测试,并给出了解决方 ...
- java批量执行sql语句_Java中批量执行sql语句
在我们实际项目开发过程中,可能有的功能在后台需要执行几条sql语句甚至需要批量的执行一些sql语句,如果是循环一条一条执行,我想大家都知道这样做的效率特别低,尤其是批量sql时,但是如果我们先循环把整 ...
最新文章
- 开发高性能的WebService应用 zhuan
- Android组件的通讯-Intent
- Java程序运行纳秒级差值计算
- [转载]Memcache内存临界测试
- python中关于turtle库的学习笔记
- xaml语言建立首个win8 Metro应用,rss阅读器
- 【转载】最好女孩子概率模型
- python如何收集数据_如何从另一个文件导入列表并从中“收集”数据?(Python)...
- blur失焦方法会触发两次_教程 | ARAMIS光学测量系统散斑制作与光学应变测量方法...
- 前端开发书籍推荐与学习路线
- 三道简单算法题(二)
- 打破校史,发学校首篇Science的博士小姐姐,近日再发Nature!破解百年谜题
- 容器技术Docker K8s 34 容器服务ACK基础与进阶-安全管理
- 移动应用开发--实现QQ登录界面(Android)
- kali linux暴力破解攻击
- java月亮代码_Java编程实现月食简单代码分享
- 如何用c语言程序预测身高,测身高的C语言程序.doc
- 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能
- burp直接抓取windows微信小程序与公众号数据包
- 什么是知识,什么是知识图谱,有什么作用,有哪些应用领域?
热门文章
- 人工神经网络与深度神经网络
- 有限元剖网格之Gmsh安装与使用入门
- 【PyTorch】如何取得预训练模型的标签label列表(以 Alexnet 在 ImageNet 上的预训练模型为例)
- 如何控制项目边界,与客户项目负责人结成同盟军
- 英文阅读积累 - 2019年4月
- Android使用TextToSpeech实现语音播报-及默认不支持中文的方案
- 最常见加密方式和Python实现
- 我平时总结的几个Python编程小技巧
- vue z-index层级显示问题
- 广东民办大学计算机专业,二本考生:12所民办大学的计算机专业实力不错,报考难度较低...