前言: 前段时间新项目上线为了赶进度很多模块的功能都没有经过详细的测试导致了生成环境中的数据和实际数据对不上,因此需要自己手写一个数据库脚本来更新下之前的数据。...好像并没有for和foreach这种类型的功能呀,不过关于数据库遍历最常见的方法当然是大家经常会想到的游标啦,但是这次我并没有使用游标,而是通过创建临时表的方式来更新遍历数据的。...首先使用游标的方式遍历数据可能代码上比较直观,但是代码比较繁琐(声明游标,打开游标,使用游标,关闭游标和释放游标)并且不符合操作集合的原则,而且也非常的耗费性能,因此通常数据量比较大的情况下不推荐使用游标...通过临时表while遍历数据,更符合我们日常的编程思想操作集合原则,性能上虽不敢保证表使用游标要好多少,但是在把临时表使用恰当的前提是能减少大量的性能消耗,并且使用起来非常简单易懂。...通过创建临时表遍历更新数据: 注意:这里只是一个简单的临时表更新实例。 我的目的是把TalkingSkillType表中的Sort值更新成为与Id一样的值! 未更新前的数据如下图所示: ?
其实我用到最多的就是如果项目已经部署上线了,但是有些数据是出错了,导致无法正常使用,要修改数据表的方式来解决,但又涉及多个表联动操作的话,这个时候我第一时间就是用存储过程来解决,当然你也可以通过写Java...i 循环 -- 核心循环SQL; SET i = i + 1 ; -- 计数器+1 END WHILE;...要处理存储过程中的结果集,请使用游标。...游标允许您迭代查询返回的一组行,并相应地处理每行。 MySQL游标为只读,不可滚动和敏感。 1、只读:无法通过光标更新基础表中的数据。2、不可滚动:只能按照SELECT语句确定的顺序获取行。...敏感游标比一个不敏感的游标执行得更快,因为它不需要临时拷贝数据。但是,对其他连接的数据所做的任何更改都将影响由敏感游标使用的数据,因此,如果不更新敏感游标所使用的数据,则更安全。
局部变量只能在 存储过程和函数 中使用 会话用户变量的定义: 必须赋值 且 @ 符号开头 #变量的定义方式有很多种,这里只需要掌握简单的几种即可,其他的了解就行 #不指定是不是Mysql版本原因,我看有的人赋值不需要...LOOP LOOP循环语句用来重复执行某些语句,LOOP内的语句一直重复执行直到使用LEAVE子句跳出循环过程; 无论如果都会执行一次 没有条件需要手动 LEAVE 不然会陷入死循环 -- [] 可选表示定义...循环结构之WHILE WHILE语句创建一个带条件判断的循环过程: WHILE在执行语句执行时,首先对指定的 表达式进行判断,表达式成立,就执行循环,否则退出循环....#如果是用 Oracle 或者 PostgreSQL,需要写成 DECLARE cursor_name CURSOR IS SELECT语句; 打开游标: 当我们定义好游标之后,如果想要使用游标,必须先打开游标...,好像是 游标循环的时候不知道自己已经执行完毕了,FETCH没有退出循环 光标必须在声明处理程序之前被声明,并且变量和条件必须在声明光标或处理程序之前被声明 本人更新数据时发现利用游标更新数据时出错,但是数据还是可以更新的
循环语句 ①while循环 while: while循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。具体语法为: -- 先判定条件,条件结果为TRUE则执行逻辑,否则不执行语句。...WHILE 条件 DO #SQL逻辑 END WHILE; -- 存储过程中使用WHILE DELIMITER $$ CREATE PROCEDURE 存储过程名称([IN | OUT | INOUT...LOOP可以配合一下两个语句使用: LEVEL:配合循环使用,退出循环。 ITERATE:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。...游标 和 条件处理程序 ①游标 cursor cursor: 游标(CURSOR): 是用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理。...#所有没有被SQLWARNING或NOT FOUND捕获的代码的简写 -- statement解释 /* 程序满足condition_value就会执行handler_action, 执行完handler_action
流程控制 解决复杂问题不可能通过一个 SQL 语句完成,我们需要执行多个 SQL 操作。流程控制语句的作用就是控制存储过程中 SQL 语句的执行顺序,是我们完成复杂操作必不可少的一部分。...WHILE在执行语句执行时,先对指定的表达式进行判断,如果为真,就执行循环内的语句,否则退出循环。...,WHILE语句内的语句或语句群被执行,直至循环条件为假,退出循环。...4. 2 使用游标步骤 游标必须在声明处理程序之前被声明,并且变量和条件还必须在声明游标或处理程序之前被声明。 如果我们想要使用游标,一般需要经历四个步骤。...打开游标的语法如下: OPEN cursor_name 当我们定义好游标之后,如果想要使用游标,必须先打开游标。
流程控制 解决复杂问题不可能通过一个 SQL 语句完成,我们需要执行多个 SQL 操作。流程控制语句的作用就是控制存储过程中 SQL 语句的执行顺序,是我们完成复杂操作必不可少的一部分。...WHILE 在执行语句执行时,先对指定的表达式进行判断,如果为真,就执行循环内的语句,否则退出循环。...;如果循环条件结果为真,WHILE 语句内的语句或语句群被执行,直至循环条件为假,退出循环。...# 4.2 使用游标步骤 游标必须在声明处理程序之前被声明,并且变量和条件还必须在声明游标或处理程序之前被声明。 如果我们想要使用游标,一般需要经历四个步骤。...打开游标的语法如下: OPEN cursor_name 当我们定义好游标之后,如果想要使用游标,必须先打开游标。
控制流语句 说明 BEGIN…END 定义语句块 IF…ELSE 条件处理语句,如果条件成立,执行IF语句; 否则执行ELSE语句 CASE 分支语句 WHILE 循环语句 GOTO 无条件跳转语句 RETURN...语法格式为: BEGIN { sql语句|语句块 } END 下面几种情况经常要用到BEGIN和END语句: WHILE循环需要包含语句块。 CASE语句的分支包含语句块。...④ WHILE语句 WHILE语句可以重复执行若干SQL语句。...lselect_statement:是定义游标结果集的标准 SELECT 语句。 UPDATE [OF column_name [,...n]]:定义游标内可更新的列。...如果 n 或 @nvar 为负数,返回游标尾之前的第 n 行并将返回的行变成新的当前行。如果 n 或 @nvar 为 0,则没有行返回。
这是给博主最大的支持。以后博主会更新大量的优质的作品!!!!...标准语法 -- 标准语法 IF 判断条件1 THEN 执行的sql语句1; [ELSEIF 判断条件2 THEN 执行的sql语句2;] ......[ELSE 执行sql语句n;] END CASE; 8.6while循环 标准语法 -- 标准语法 初始化语句; WHILE 条件判断语句 DO 循环体语句; 条件控制语句; END WHILE;...while循环是条件满足则执行 8.8loop循环 标准语法 -- 标准语法 初始化语句; [循环名称:] LOOP 条件判断语句 [LEAVE 循环名称;] 循环体语句; 条件控制语句; END...8.9游标 游标的概念 游标可以遍历返回的多行结果,每次拿到一整行数据 在存储过程和函数中可以使用游标对结果集进行循环的处理 简单来说游标就类似于集合的迭代器遍历 MySQL中的游标只能用在存储过程和函数中
因为我设置的session 级别的所以只会在这个会话生效。我们现在来测试一下到底有没有生效。...1.6 while while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。...具体语法为: -- 先判定条件,如果条件为true,则执行逻辑,否则,不执行逻辑 WHILE 条件 DO SQL逻辑......游标(CURSOR)是用来存储查询结果集的数据类型 , 在存储过程和函数中可以使用游标对结果集进行循环的处理。...这个存储过程中的while 循环没有做退出的判断,当游标的数据集获取完毕之后,再次获取数据,就会报错,从而终止了程序的执行。
要使用游标,先要定义一个游标变量 3.创建游标 在创建一个游标前,我们需要先清除游标的语法 1、定义游标 DECLARE 游标名称 CURSOR FOR SQL语句; 2、打开游标 OPEN 游标名称;...; 结果: 结果与customers里的一致,但是这些结果是循环一条一条往下移动的过程中插入的,即这个循环执行了7次。...以上就是游标的基本操作原理了,此外游标的循环体还有WHILE,REPEAT等操作方式,他们的操作方式与LOOP类似,都是用来循环执行循环体里面的内容,直到循环结束。...4.使用场景 当我们通过sql查询数据时, 1,普通方式是一条sql过去,服务器把数据全部返回给你,还有一种方式是 2,游标方式,游标方式会在服务器端找到要查询的数据,然后分批次返回给你,这种方式适合要操作大量操作数据的场景...,服务器给我一条,我处理一条,然后直到循环处理结束,客户端不会一次接受到全部的数据 第一种方式会出现内存泄露问题, 第二种不会,但会长时间占用服务器链接 游标简单的理解就是:告诉服务器我要查询的数据结果集
[ELSE statement list] END CASE; 7.while whle循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。...具体语法为: #先判定条件,如果条件为tue,则执行逻辑,否则,不执行逻辑 WHILE 条件 DO ...--SQL逻辑....END WHILE; 8.repeat repeat是有条件的循环控制语句,当满足条件的时候退出循环。具体语法为: #先执行一次逻辑,然后判定逻辑是否满足,如果满足,则退出。...LOOP可以配合一下两个语句使用: LEAVE:配合循环使用,退出循环。 ITERATE:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。...,在存储过程和函数中可以使用游标对结果集进行循环的处理。
要完成相对简单的应用功能,可能只需要编写一个pl/sql块;但是如果想要实现复杂的功能,可能需要在一个pl/sql块中嵌套其他的pl/sql块。...---- 循环语句的使用 形式1 while 条件 loop ..... end loop; 当条件满足时,执行循环体,不满足时,退出循环体。...---- 显式游标和隐式游标 上面介绍的是显式游标,下面说下隐式游标 DML操作和单行SELECT语句会使用隐式游标,它们是: 插入操作:INSERT 更新操作:UPDATE 删除操作:DELETE...所以通常在刚刚执行完操作之后,立即使用SQL游标名来访问属性。 游标的属性有四种,如下所示。...---- PL/SQL调测 可以在pl/sql工具中 新建测试窗口,调测过程和调测存过的方式一样,可以一步一步的跟踪sql执行的过程。 ?
整体来说,本章没有意思,等实际用的时候,再进行增加或修改 变量 变量分为:系统变量以及用户自定义变量 系统变量 系统变量又分为全局系统变量和会话系统变量(具体是什么,我暂时不想知道) 查看系统变量...: continue——错误不处理,继续执行 exit——遇到错误马上退出 错误类型: 定义处理程序的几种方式: 流程控制 MySQL的流程控制语句:只能用于存储过程 条件判断语句:if语句和case...——loop 语法结构: sql[loop_label:]loop 循环执行的语句 end loop[loop_label] loop_label表示loop语句的标注名称,该参数可以省略。...循环结构——while 语法结构 sql[while_label:]while 循环条件 do 循环体 end while[while_label]; 循环结构——repeat repeat循环首先会先执行一次循环...看下面的文档 个人解释:就是充当个指针的作用 使用游标的步骤:看尚硅谷的课件 声明游标——用declare 打开游标——用open 使用游标——fetch 关闭游标——close MySQL8.0
(游标是什么?) 游标(cursor)官方定义:是系统为用户开通的一个数据缓冲区,存放sql执行结果。...而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。...(游标的生命周期) --1.声明游标 --2.打开游标 --3.声明游标提取数据所要存放的变量 --4.定位游标到哪一行 使用实例 1、搭配while循环语句使用 # 代码使用目的:update t_shop...例如你在游标打开的时候,对游标查询的数据表数据进行增删改,操作之后,静态游标中select的数据依旧显示的为没有操作之前的数据。如果想与操作之后的数据一致,则重新关闭打开游标即可。...如果使用API函数或T-SQL Where Current of子句通过游标进行更新,他们将立即可见。在游标外部所做的更新直到提交时才可见。
但是我们执行查询,查询出来的数据,却没有id为13的记录。...# while 介绍 while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。...具体语法为: -- 先判定条件,如果条件为true,则执行逻辑,否则,不执行逻辑 WHILE 条件 DO SQL逻辑... END WHILE; 案例 计算从1累加到n的值,n为传入的参数值。...介绍 游标(CURSOR)是用来存储查询结果集的数据类型 , 在存储过程和函数中可以使用游标对结果集进行循环的处理。...上述的存储过程,最终我们在调用的过程中,会报错,之所以报错是因为上面的while循环中,并没有退出条件。当游标的数据集获取完毕之后,再次获取数据,就会报错,从而终止了程序的执行。
PLSQ编程 流程控制: 判断语句 if 循环语句 loop exit while for 顺序语句 goto null 判断语句 if IF THEN PL/SQL 和 SQL语句...loop exit while for 简单循环:loop LOOP 要执行的语句; EXIT WHEN /条件满足,退出循环语句/END LOOP; --输出1--10 declare...结束循环 end loop; end; while循环: WHILE LOOP 要执行的语句;END LOOP; --输出1--10 declare...使用for循环来提取游标数据 PL/SQL语言提供了游标FOR循环语句,自动执行游标的OPEN、FETCH、CLOSE语句和循环语句的功能;当进入循环时,游标FOR循环语句自动打开游标,并提取第一行游标数据...SQL命令执行完毕立即关闭隐式游标。 –删除EMP 表中某部门的所有员工,如果该部门中已没有员工,则在DEPT 表中删除该部门。
多用于返回多行的SELECT语句 隐式游标(Implicit Cursor):在执行一个SQL语句时,服务器将自动创建一个隐式游标,该游标是内存中的工作区,存储了执行SQL语句的结果,可通过游标的属性获得...SQL的执行结果及状态信息。...游标的属性只能在PL/SQL块中使用,而不能在SQL语句中使用 例1 将PRODUCTS表中类型为1的所有产品的单价打9折,并显示该更新所影响的行数....dbms_output.put_line(‘更新了’||SQL%ROWCOUNT||’条记录’); ELSE dbms_output.put_line(‘没有更新记录’);...END LOOP; 检索游标变量时只能使用简单循环或 WHILE 循环,不能采用 FOR 循环. (5)关闭游标变量 检索并处理完游标变量所对应的结果集后,可以关闭游标变量,释放存储空间。
:表示搜索表达式条件,如果值为真,则执行相应的SQL语句列表//如果没有search_condition匹配,else子句被执行。...由于loop循环没有初始条件和结束条件,因此需要使用 leave 语句来结束循环。...默认为definercomment 'message'函数的注释信息,指明函数的功能创建存储过程时,系统默认指定contains SQL,它标识存储过程使用了SQL语句,如果存储过程中没有使用SQL语句...(3)调用方式的不同存储过程一般是作为一个独立的部分来执行,自定义函数嵌入在sql中使用的,可以在select中调用,就像内置函数一样,比如cos()、sin()。...2.1.8、在存储过程中定义和使用游标存储过程功能很强大,在存储过程中可以声明全局变量,也可使用if语句,循环语句。还可以使用游标。
存储过程语法 8.1存储过程语法介绍 8.2变量的使用 8.3if语句的使用 8.4参数的传递 8.5case语句的使用 8.6while循环 8.7repeat循环 8.8loop循环 8.9游标...存储过程可以接收参数、执行一系列SQL操作并返回结果。 函数是一个可重复使用的代码块,它接收输入参数并根据这些参数执行一系列操作,最后返回一个结果。函数可以是内置函数、自定义函数或用户定义函数。...调用方式:函数可以在 SQL 语句中直接调用,而存储过程需要使用 CALL 语句来调用。 返回结果集:存储过程可以返回多个结果集,而函数只能返回一个结果集。...循环 标准语法 -- 标准语法 初始化语句; WHILE 条件判断语句 DO 循环体语句; 条件控制语句; END WHILE; 案例演示 /* 计算1~100之间的偶数和 */ DELIMITER...游标的概念 游标可以遍历返回的多行结果,每次拿到一整行数据 在存储过程和函数中可以使用游标对结果集进行循环的处理 简单来说游标就类似于集合的迭代器遍历 MySQL中的游标只能用在存储过程和函数中 游标的语法
8.1存储过程语法介绍 8.2变量的使用 8.3if语句的使用 8.4参数的传递 8.5case语句的使用 8.6while循环 8.7repeat循环 8.8loop循环 8.9游标 9.存储过程的总结...标准语法 -- 标准语法 IF 判断条件1 THEN 执行的sql语句1; [ELSEIF 判断条件2 THEN 执行的sql语句2;] ......循环 标准语法 -- 标准语法 初始化语句; WHILE 条件判断语句 DO 循环体语句; 条件控制语句; END WHILE; 案例演示 /* 计算1~100之间的偶数和 */ DELIMITER...while循环是条件满足则执行 案例演示 /* 计算1~10之间的和 */ DELIMITER $ CREATE PROCEDURE pro_test9() BEGIN -- 定义求和变量 DECLARE...SELECT * FROM stu_score; 游标的优化使用(配合循环使用) /* 当游标结束后,会触发游标结束事件。
领取专属 10元无门槛券
手把手带您无忧上云