Mysql 游标在数据库当中引用

  本人由于在某互联网公司担任后台开发工程师,但是公司基础数据较多,而且较为复杂。

  所以在开发前期就开发使用excel表格导入基础数据,但是由于前期对业务了解,在书写导入程序时原厂物料名称没有在名称后面加入 ‘-原厂’ 字样,经实际操作发现后立即修改程序;

  但是在此期间导入数据都未脏数据,为避免重复操作,使用了数据库右边批量处理检索结果。

  以下为游标使用实例。

 1 DROP PROCEDURE IF EXIEST re_name()
 2 CREATE PROCEDURE re_name()
 3 begin
 4     DECLARE s_did int(11);
 5     DECLARE s_dname VARCHAR(80);
 6     DECLARE stop int DEFAULT 0;
 7     -- DECLARE fname VARCHAR(80);
 8     DECLARE cur cursor for select did,dname from db_fittings where dQuality = ‘原厂‘ AND dname NOT LIKE ‘%原厂%‘ ;
 9     declare CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET stop = null;
10     OPEN cur;
11 FETCH cur INTO s_did,s_dname;
12     WHILE ( stop is not null ) DO
13     update `db_fittings` set `dname` = CONCAT(s_dname,‘-原厂‘) WHERE `did` = s_did;
14     FETCH cur INTO s_did,s_dname;
15     END WHILE;
16 CLOSE cur;
17 end

  以下解释上面代码作为记录:

  首行如果存在就删除存储过程re_name();

  创建存储过程re_name();

  声明局部变量;

  声明游标;游标的使用和变量相同需要先声明:DECLARE cur cursor for select did,dname from db_fittings where dQuality = ‘原厂‘ AND dname NOT LIKE ‘%原厂%‘ ;

  以下申明在查询出现异常是停止跳出循环:declare CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET stop = null;

  在使用右边之前需要打开游标:open cur

  使用FETCH 讲查询出来的结果赋予临时变量:FETCH cur INTO s_did,s_dname

  然后再处理使用WHILE DO 循环处理游标查询结果

  关闭游标。

  结算存储过程。

  在书写过程中遇到的问题

  原数据库字段长度32 不够长会导致出现 data too long for column ‘dname‘ at row 1 错误,再讲长度32改为60之后程序正常运行,顺利改名

时间: 2024-08-01 07:11:48

Mysql 游标在数据库当中引用的相关文章

MySQL游标的简单实践

Q:为什么要使用游标? A: 在存储过程(或函数)中,如果某条select语句返回的结果集中只有1行,可以使用select into语句(上几篇博客有介绍到用法)来得到该行进行处理:如果结果集中有多行,简单的select语句成批地进行处理,需要在检索出来的行中前进或后退一行或多行--若是想得到其中的每一行进行处理,就必须使用游标. Q:什么是游标? A: 游标(cursor),是一个存储在MySQL服务器上的数据库查询,游标不是一条 SELECT语句,而是被该语句检索出来的结果集:可以看做是指向

使用mysql 游标,快速删除子节点及其附属节点

上篇,我写的是如何用数据存储,并通过html展示出树形的结构, 本篇我将讲述,如何通过存储过程,删除一个树节点及其附属节点.网上已经有非常多的关于mysql 游标使用的文章了, 为什么我还要写这篇文章呢,主要是想表达一些在软件设计领域的一些想法. 我不赞同在数据库中大量的使用存储过程, 因为我觉得随着软件系统的复杂度逐渐提高,维护的难度会逐渐的增大.而且大批量的使用存储过程,不利于后期通过分布式部署应用程序来解决日益增多的业务需求. 我推荐把存储过程用在处理一些不包含太多业务,批量操作数据的场景

SqlServer和MySQL游标学习

一 sqlserver游标使用 /*** 游标的使用  讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱.  使用游标的顺序: 声名游标.打开游标.读取数据.关闭游标.删除游标. 1.3.1声明游标 最简单游标声明:DECLARE <游标名>CURSOR FOR<SELECT语句>: 其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询 例子: [已表2 AddSalary为例子] Declare mycursor cursor for select *

实验十--- MySQL过程式数据库对象

实验十 MySQL过程式数据库对象 一.  实验内容: 1. 存储过程的创建和调用 2. 存储函数的创建和调用 3. 触发器的创建和触发 4. 事件的创建和修改 一.  实验项目:员工管理数据库 用于企业管理的员工管理数据库,数据库名为YGGL中,YGGL数据库中包括三个表:Employees(员工信息表).Departments(部门信息表).Salary(员工薪水情况表). 二.  实验步骤:(要求创建成功后,必须调用或触发) 1.   创建存储过程,使用Employees表中的员工人数来初

mysql/sqlser/oracle数据库驱动的写法

oracle数据库:  driver="oracle.jdbc.driver.OracleDriver" url = "jdbc:oracle:thin:@地址:端口:数据库名" mysql数据库: driver="com.mysql.jdbc.Driver" url = "jdbc:mysql://地址:端口/数据库名?user=root&password=root&useUnicode=true&charac

mysql基础和数据库的优化

Mysql基础... 4 Mysql介绍... 4 登录mysql mysql –u root –p[掌握]... 4 SQL语言... 4 DCL. 4 grant. 4 revoke. 4 DDL. 4 建库... 4 删库... 4 建表... 4 看表结构... 5 删表... 5 修改表... 5 DML[重点]... 5 增加... 5 删除... 5 修改... 5 查看... 5 排序... 5 总数... 5 求和... 5 平均... 6 最大... 6 最小... 6 表连

Java 调用Mysql dump 备份数据库

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); try { String name = sdf.format(new Date()); String filePath = System.getProperty("user.dir") + "//" + name + ".sql"; // 系统执行器 Runtime rt = Runtime.getRu

mySQL (关系型数据库管理系统)

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件. MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. MySQL所使用的 SQL 语言是用于访问

180多个数据库版本一键切换,PHPWAMP8.8.8.8(支持切换任意数据库,全面支持mysql等常见数据库)

PHPWAMP8.8.8.8版本支持一键切换数据库的PHP集成环境,纯绿色 支持切换任意数据库,默认全面支持mysql等常见数据库) 最新最旧版本的数据库都可以切换,同时运行不同版本的数据库! 完美兼容任何集成环境,多开,群开无压力,满足各种变态测试! 只需点击相关设置,切换你想要的任意版本即可,真正的一键自定义! 在一键自定义同时,完美兼顾用户的自主修改,各种DIY自定义 1.支持一键自定义设置MYSQL版本,180多个MYSQL历史版本随意切换! 2.优化旧版本的"700多个PHP版本随意切