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语句相关推荐

  1. mysql函数 动态语句_自定义函数动态执行SQL语句

    Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者. DDL 和 DML Sql代码 收藏代码 /*** DDL ***/ begin EX ...

  2. mysql带参数的sql_MySql存储过程是带参数的存储过程(动态执行SQL语句)

    下文介绍的MySql存储过程是带参数的存储过程(动态执行SQL语句),该MySql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有调用方式: call GetUsersDynam ...

  3. oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数

    oracle中有没有可动态执行sql语句的函数 关注:233  答案:2  手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...

  4. mysql sql语句 参数化_C#参数化执行SQL语句,防止破绽攻击本文以MySql为例【20151108非查询操作】_mysql...

    C#参数化执行SQL语句,防止漏洞攻击本文以mysql为例[20151108非查询操作] 为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果 ...

  5. mysql创建函数执行sql语句_MySQL mysql_query 函数执行SQL语句

    mysql_query()函数 PHP MySQL 函数库中,mysql_query() 函数用于向 MySQL 发送并执行 SQL 语句. 对于没有数据返回结果集的 SQL ,如 UPDATE.DE ...

  6. mysql写定时执行语句_mysql实现定时执行sql语句

    mysql实现定时执行SQL语句需要用到Event 1.检查event事件是否开启 show variables like '%sche%'; 1)如果Value值为OFF,则需要开启.需要超级权限 ...

  7. java代码执行mysql语句_三种执行SQL语句的的JAVA代码

    问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...

  8. mysql 反斜杠 转义_MySQL中执行sql语句反斜杠需要进行转义

    最近在执行一个sql备份的还原后,发现系统的部分路径找不到,于是开始debug,最后发现,是由于备份的sql语句在还原时,反斜杠(\)被mysql吃掉了.本文对反斜杠和顺斜杠进行了测试,并给出了解决方 ...

  9. java批量执行sql语句_Java中批量执行sql语句

    在我们实际项目开发过程中,可能有的功能在后台需要执行几条sql语句甚至需要批量的执行一些sql语句,如果是循环一条一条执行,我想大家都知道这样做的效率特别低,尤其是批量sql时,但是如果我们先循环把整 ...

最新文章

  1. 开发高性能的WebService应用 zhuan
  2. Android组件的通讯-Intent
  3. Java程序运行纳秒级差值计算
  4. [转载]Memcache内存临界测试
  5. python中关于turtle库的学习笔记
  6. xaml语言建立首个win8 Metro应用,rss阅读器
  7. 【转载】最好女孩子概率模型
  8. python如何收集数据_如何从另一个文件导入列表并从中“收集”数据?(Python)...
  9. blur失焦方法会触发两次_教程 | ARAMIS光学测量系统散斑制作与光学应变测量方法...
  10. 前端开发书籍推荐与学习路线
  11. 三道简单算法题(二)
  12. 打破校史,发学校首篇Science的博士小姐姐,近日再发Nature!破解百年谜题
  13. 容器技术Docker K8s 34 容器服务ACK基础与进阶-安全管理
  14. 移动应用开发--实现QQ登录界面(Android)
  15. kali linux暴力破解攻击
  16. java月亮代码_Java编程实现月食简单代码分享
  17. 如何用c语言程序预测身高,测身高的C语言程序.doc
  18. 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能
  19. burp直接抓取windows微信小程序与公众号数据包
  20. 什么是知识,什么是知识图谱,有什么作用,有哪些应用领域?

热门文章

  1. 人工神经网络与深度神经网络
  2. 有限元剖网格之Gmsh安装与使用入门
  3. 【PyTorch】如何取得预训练模型的标签label列表(以 Alexnet 在 ImageNet 上的预训练模型为例)
  4. 如何控制项目边界,与客户项目负责人结成同盟军
  5. 英文阅读积累 - 2019年4月
  6. Android使用TextToSpeech实现语音播报-及默认不支持中文的方案
  7. 最常见加密方式和Python实现
  8. 我平时总结的几个Python编程小技巧
  9. vue z-index层级显示问题
  10. 广东民办大学计算机专业,二本考生:12所民办大学的计算机专业实力不错,报考难度较低...