一个存储过程实现(问题答案)
不过MYSQL的预处理好像得用动态变量,静态的不认。老出错。
------------------
表[A],2个字段,name,num,
数据为:
name num
tom 3
jerry 2
jessic 2
lily 1
希望通过一段SQL语句得到以下的数据集:
tom
tom
tom
jerry
jerry
jessic
jessic
lily
就是根据NUM的值,重复几次NAME。
--------------------------------------
贴出完成版
create table test(name varchar(64),num int(11));
insert into test values('tom',3),('jerry',2),('jessic',2),('lily',1);
---------------------------
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`sp_test`$$
CREATE PROCEDURE `test`.`sp_test`()
BEGIN
declare cnt int(11);
declare i int(11);
declare j int(11);
create temporary table num (name varchar(64),num int(11));
select count(*) from test where 1 = 1 into cnt;
set i = 0;
loop1:loop
set @query1 = concat('select name,num from test limit ',i,',1 into @name,@num1');
prepare stmt1 from @query1;
execute stmt1;
deallocate prepare stmt1;
set j = 1;
loop2:loop
set @query2 = 'insert into num values(?,?)';
prepare stmt2 from @query2;
execute stmt2 using @name,@num1;
deallocate prepare stmt2;
set j = j + 1;
if j > @num1 then
leave loop2;
end if;
end loop loop2;
set i = i + 1;
if i > cnt -1 then
leave loop1;
end if;
end loop loop1;
select name from num;
END$$
DELIMITER ;
------------------
call sp_test();
query result(8 records)
name
tom
tom
tom
jerry
jerry
jessic
jessic
lily
转载于:https://blog.51cto.com/yueliangdao0608/81398
一个存储过程实现(问题答案)相关推荐
- 1 创建一个存储过程,以及对存储过程的调用 MySQL
1 首先创建一张tb1表 sql语句如下 CREATE TABLE `tb1` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `age` int(11) ...
- 创建一个存储过程,返回指定员工的姓名和薪水
/* 创建一个存储过程,返回指定员工的姓名和薪水 */ create or replace PROCEDURE queryEmp1(eno in number,empname out VARCHAR2 ...
- 使用oracle 的 PL/Sql 定时执行一个存储过程
/* 使用oracle 的 PL/Sql 定时执行一个存储过程 测试目的:在表 tab 中间隔一分钟插入一条数据 实现方案: 1.通过 oracle 中 dbms_job 完成存储过程的定时调用 2. ...
- 对一个存储过程语法的解读
create or replace package body SY_USER_PKG1 is//创建一个存储过程的声明,在package body就是存储过程的实现体所放的包,SY_USER_PKG1 ...
- 定义一个存储过程,以员工工号为参数,修改该员工的工资,若该员工属于10部门,则工资增加150 若属于20号部门,工资加200,若属于30部门,工资加250 若其它部门,则加300
注:使用的是Oracle的实例数据库中的scott用户 定义一个存储过程,以员工工号为参数,修改该员工的工资,若该员工属于10部门,则工资增加150 若属于20号部门,工资加200,若属于30部门,工 ...
- mysql定时任务如何每天0点跑_mysql定时任务,每天的零点执行一个存储过程
1 前言 利用navicat工具来写存储过程及定时执行,此文章是按照自身经验总结的,仅作为记录使用. 2 步骤 2.1 新建过程 2.2 在函数体写你需要执行的代码 CREATE DEFINER=`r ...
- mysql怎么让一个存储过程定时执行
查看event是否开启: show variables like '%sche%'; 将事件计划开启: set global event_scheduler=1; 关闭事件任务: alter ev ...
- 在存储过程中如何使用另一个存储过程返回的结果集
1.创建一个临时表#tmp,表结构与目标存储过程procedure_name的返回结果集兼容(兼容即可,不必相同). CREATE TABLE #tmp( [columns_list] ) 2.执行存 ...
- mysql 让一个存储过程定时作业的代码(转)
1.在mysql 中建立一个数据库 test1 语句:create database test1 2.创建表examinfo create table examinfo( id int auto_in ...
- mysql怎么创建自动作业_mysql 让一个存储过程定时作业的代码
1.在mysql 中建立一个数据库 test1 语句:create database test1 2.创建表examinfo create table examinfo( id int auto_in ...
最新文章
- 大数据笔记2019.5.6
- Mybatis: 返回不同实体(对象数组)
- Apache Wicket:记住我的功能
- 数据预处理和特征工程
- springboot2.0 fastjson 日期格式化不生效解决
- 终于有人讲明白了,原来这才是全球低时延一张网技术
- ubuntu12.04 启动mysql_ubuntu 12.04 mysql 改utf8 启动不了
- 微信 html关闭当前页
- html5-微格式-时间的格式
- JEECG支付服务窗平台与服务窗接口对接文档
- python实现ncm转mp3_滚动歌词制作 之 ncm格式转mp3
- 微信跳转手机默认浏览器实现微信扫一扫功能扫码直接下载apk
- html5新浪微博代码,JS实现的新浪微博大厅文字内容滚动效果代码
- 程序员怎么做可以安全通过试用期
- ubuntu桌面幻灯片_如何在Ubuntu中创建墙纸幻灯片
- 大话nbu二(netbackup的基本配置)
- flask-sqlalchemy一对多 知了传课 flask web全栈开发实战 黄勇
- java 时间轮算法_时间轮算法解析(Netty HashedWheelTimer源码解读)
- 数字世界里的足球——数研院探索多智能体足球AI并取得新突破
- 逆向分析HyperSnap 7 专业版完成注册
热门文章
- android 打包问题,Android离线打包常见问题
- php快速排序空间复杂度,PHP 算法基础----时间复杂度和空间复杂度(转载)
- java 象限分析_用四种象限分析你(未来的人生走向)
- 力扣-572. 另一棵树的子树
- Kotlin基础学习第5章—表达式
- Android Spinner(下拉菜单)常用属性与点击事件获取值
- RK3288_Android7.1的gpio按键驱动浅析
- Android修改了sdk里面的apk编译push进机器不生效问题
- C#_基础_部分类partial(十八)
- Writing A Threadpool in Rust