`

合并评论 ------- MySql 游标存储过程

阅读更多

book内容:

 

 

id

name

appraisal

1

max

A

2

max

B

3

kelongmao

C

4

zero

D

5

kelongmao

E

6

max

F

7

zero

G

8

kelongmao

H

9

zero

I

 

book2 内容:

 

 

id

name

appraisal

1

max

ABF

2

zero

DG

3

kelongmao

CEH

 

create table book(

   id int primary key,

  name varchar(20),

  appraisal varchar(20)

);

 

 

create table book2(

   id int primary key,

  name varchar(20),

  appraisal varchar(20)

);

 

 

insert into book values(1, 'max', 'A');

insert into book values(2, 'max', 'B');

insert into book values(3, 'kelongmao', 'C');

insert into book values(4, 'zero', 'D');

insert into book values(5, kelongmao, 'E');

insert into book values(6, 'max', 'F');

insert into book values(7, 'zero', 'G');

insert into book values(8, 'kelongmao', 'H');

insert into book values(9, 'zero', 'I');

 

 

 

用Sql实现,将book的评论合并,填写到book2表中:

 

实现方案: mysql  存储过程

测试环境: mysql   数据库

 

存储过程如下:

 

DELIMITER $$
DROP PROCEDURE IF EXISTS getUserInfo $$
CREATE PROCEDURE getUserInfo(count int) 

BEGIN
declare _id1  int;
declare _name1  varchar(20);
declare _app1  varchar(20);
declare _name2   varchar(20);
declare _app2  varchar(20);
declare _app3  varchar(20);
declare _app4  varchar(20);
 
DECLARE rs_cursor CURSOR FOR select * from book order by name; 
open rs_cursor;  
cursor_loop:loop
   FETCH rs_cursor into _id1, _name1, _app1; 
  set count = count - 1; 
   if _name2 is NULl then    
   set _name2 = _name1;
   set _app2 = _app1;
   set _app3 =  _app1 ;
   elseif  STRCMP(_name2 , _name1)<>0 then    
  insert into book2 values(_id1, _name2,  _app3);
  set _name2 = _name1;
  set _app3 =  _app1 ; 
  else                     
  set _app3 = concat(  _app1,_app3  ); 
   end if;
 if count < 1 then  
insert into book2 values(_id1, _name2,  _app3);
 end if;
end loop cursor_loop;
close rs_cursor;  
END$$
DELIMITER ;
调用存储过程如下:
call getUserInfo(9);
9 的的来:
select count(*) from book;  --获得book中的书目条数
备注:
mysql  中调用存储过程的语句: call, 而不是exec
sql中打印数据的语句:  select
赋值语句: set
执行.sql脚本:  source d:\test.sql
 
 
 
 
分享到:
评论

相关推荐

    mysql 面试题.zip

    8. **MySQL游标** (05 MySQL游标.pptx) - 游标的概念和使用:学习如何在循环中逐行处理查询结果,提供更灵活的数据处理能力。 9. **50道myaql不全 不保证准确性.txt** 和 **MySql第二章练习.txt** - 这些可能是...

    MySQL培训

    - **5.1版本:**增加了视图、函数、存储过程、游标、触发器和事务等功能。 - **5.0版本:**引入了子查询和索引优化。 - **4.1版本:**支持合并查询。 - **4.0版本:**实现了外键和约束功能。 #### 四、MySQL体系...

    mysql填空12321

    这些知识点涵盖了SQL查询、变量定义、存储过程、数据操作等多个方面,下面将逐一进行详细的解析。 ### SQL查询与数据操作 1. **补全语句**: `SELECT vend_id, COUNT(*) FROM products WHERE prod_price &gt;= 10 ...

    计算机二级mysql数据库程序设计练习题(二).docx

    根据提供的文档信息,我们...通过以上内容,我们不仅了解了MySQL数据库中的一些基本概念,还深入探讨了存储过程、游标、用户权限管理和数据库设计等多个方面,这对于准备计算机二级考试的学生来说是非常重要的知识点。

    MySQL笔记1

    MySQL笔记1主要涵盖了数据库基础、MySQL简介、使用MySQL连接、数据检索、排序、过滤、通配符与正则表达式、计算字段、函数、汇总数据、分组、子查询、联结、全文本搜索、数据插入、更新与删除、创建和操纵表、视图、...

    基于Python的将Excel数据导入到Mysql数据库.zip

    在本项目中,我们主要探讨如何使用Python编程语言将Excel数据高效地导入到MySQL数据库中。这是一项在数据处理和分析领域中常见的任务,尤其适用于毕业设计或计算机科学相关的课程作业。下面,我们将详细介绍实现这一...

    高性能MySQL(第3版).part2

    7.4.1存储过程和函数278 7.4.2触发器279 7.4.3事件281 7.4.4在存储程序中保留注释283 7.5游标283 7.6绑定变量284 7.6.1绑定变量的优化286 7.6.2SQL接口的绑定变量286 7.6.3绑定变量的限制288 7.7用户自定义...

    折磨人的存储过程

    6. **跨数据库兼容性**:不同的数据库管理系统(如MySQL、Oracle、SQL Server等)对存储过程的支持和语法有差异,这在迁移或跨平台开发时会带来额外的工作。 7. **版本控制**:在团队协作中,版本控制对于存储过程...

    MySQL必知必会_dotzgx_MYSQL_

    理解如何声明、打开、读取和关闭游标,以及在存储过程中如何使用它们。 8. **触发器**:触发器是数据库自动执行的预定义操作,当特定的DML(INSERT、UPDATE、DELETE)事件发生时触发。它们可以实现业务规则的自动化...

    处理MySQL的典型问题.pdf

    在存储过程中,他们定义了一个`CONTINUE HANDLER`来捕获`NOT FOUND`异常,当游标遍历完所有记录时,`NOT FOUND`会被触发,设置`done`为1,从而结束循环。然而,实际情况可能是循环逻辑的错误导致了多一次的迭代。...

    数据库实验5的实验报告

    通过本次实验,学生不仅掌握了SQL的基本查询语法,还学习了如何使用存储过程和存储函数进行更复杂的数据库操作。这有助于提升学生在实际项目中处理数据的能力,为后续的数据库管理与开发工作奠定了坚实的基础。 ...

    mysql高级语法教学

    MySQL提供了自定义函数的能力,比如创建用户定义的变量、游标和条件控制流程。 4. **触发器** 触发器是一种在特定数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行的SQL语句集合,可以用来实现业务规则的...

    mysql性能优化视频教程

    3. **存储引擎选择**:根据具体应用场景选择合适的存储引擎(InnoDB、MyISAM等)。 4. **安全性和备份策略**:定期备份数据,并实施严格的访问控制策略。 通过对以上知识点的学习和实践,可以有效地提升MySQL数据库...

    MySQL 45 道面试题及答案.docx

    3. 存储过程(Stored Procedure):存储过程是一组预编译的SQL语句,可以视为数据库中的函数,用于执行特定任务。优点包括提高性能、减少网络通信、增强安全性和模块化设计。缺点则包括调试困难、可移植性差和可能的...

    微软SQL和MySQL数据库实战训练营

    在微软SQL Server中,除了标准的SQL语法,还会涉及一些特有的功能,如Transact-SQL (T-SQL),它是SQL Server的扩展,包含更多用于数据库管理和编程的元素,如存储过程、触发器和游标。而在MySQL中,学员会学习到如...

Global site tag (gtag.js) - Google Analytics