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
分享到:
相关推荐
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用户自定义...
可以对属性列、数据表、视图、存储过程和存储函数授权 10.MySQL成功安装后,在系统中默认建立的用户个数是 ______。 A.0 B.1 C.2 D.3 11.数据库管理系统提供的数据控制功能包括 ______。 计算机二级mysql数据库程序...
产品安装过程中将会出现以上2个界面 9. 步骤8/8:完成安装 卸载Oracle 1. 在运行services.msc打开服务,停止Oracle的所有服务。 2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\...
用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 1.9.2 准备 create table t_user ( username varchar2(20), password varchar2(20) ); create table t_user_temp ( username varchar...
16.3.2 存储过程的创建与调用 264 16.3.3 存储过程的参数 265 16.3.4 复合语句 267 16.3.5 变量 268 16.3.6 条件语句 269 16.3.7 循环语句 271 16.3.8 游标 273 16.3.9 存储过程的删除 275 16.4 触发器的设计 275 ...
安装过程..........................................................................................................................5 第二讲 Linux基础进阶..................................................
35、MySQL、SqlServer、oracle写出字符存储、字符串转时间 52 36、update语句可以修改结果集中的数据吗? 53 37、oracle如何设置主键自动增长? 53 38、表连接、子查询的区别是什么?它们可以相互转化吗?你倾向于用...
7.10 在MySQL数据库中储存BLOB 295 7.11 在PostgreSQL中储存BLOB 296 7.12 在SQLite中储存BLOB 298 7.13 生成一个字典将字段名映射为列号 300 7.14 利用dtuple实现对查询结果的灵活访问 302 7.15 打印数据库...