注:在测试过程中,已存在数据不满足当前测试时,我们就需要构造数据来满足我们的测试工作。

如:现在需要1万条数据来模拟母猪上树时的坠亡事件(注:例子,,当然没人会像我一样无聊)!!!这个时候就需要数据起作用了,。那么我们简单的构造数据怎么做呢?那我们就开始吧

一、什么是存储过程。

--  存储过程 procedure
--  存储过程是一组为了完成特定功能的SQL语句集合
--  创建存储过程语法:
delimiter //  -- 自定义结束符
create procedure 存储过程名(输入输出类型 参数名1 参数类型,输入输出类型 参数名2 参数类型,……)
begin
    sql语句集;
end //

--  使用存储过程
call 存储名称( 参数1,参数2... );
drop procedure if exists hello world;
delimiter $$
create procedure hello world()
begin
            select * from emp ;
            select * from dept ;
            select * from student ;
end $$

call hello world();

-- 例子
-- 创建一个存储过程,名称为hello world
-- 要求存储过程实现,查询emp和dept,列出姓名和部门名称 ;
drop procedure if exists hello world;
delimiter $$
create procedure  hello world()
begin
        select e.ename , d.dname from emp e inner join dept d on e.deptno = d.deptno ;
end  $$   //这里用到多表查询

call hello world();

二、定义变量

-- 定义变量的语法   declare 申明的是一个成员变量,成员变量的作用域仅限于申明的空间范围
declare 变量名 数据类型(长度) default 默认值;

drop procedure if exists hello world;
delimiter $$
create procedure hello world()
begin
        declare h varchar(20) default 'hello' ;
        select h ;
        select ename into ttt from emp where id = 1;   
        select h ;
end $$

call hello world();

三、输入参数

-- 输入参数  
-- 示例:输入一个姓名,查出他属于哪个部门
drop procedure if exists hello world;
create procedure hello world( in name varchar(20) )
begin
            select d.dname from emp e , dept d where e.deptno = d.deptno and e.ename = name ;
end

call hello world( '彭于晏' );

-- 示例: 输入两个工资范围,列出这个范围工资的员工是哪些
drop procedure if exists hello world;
delimiter $$
create procedure hello world( sal1 int(20) , sal2 int(20) )
begin
            select ename from emp where sal between sal1 and sal2 ;
end $$
delimiter ;

call hello world( 8000 , 15000 );

-- 示例:更新指定部门员工的工资上涨20%
drop procedure if exists hello world;
delimiter $$

create procedure hello world( dept_name varchar(10) )
begin
            -- 更新之前的数据
            select e.ename , e.sal , d.dname  from emp e , dept d where e.deptno = d.deptno and d.dname = dept_name order by e.sal ;
            -- 更新操作
            update emp set sal = sal * 1.2 where deptno = ( select deptno from dept where dname = dept_name );
            -- 更新之后的数据
            select e.ename , e.sal , d.dname  from emp e , dept d where e.deptno = d.deptno and d.dname = dept_name order by e.sal ;

end $$
delimiter ;

四、变量赋值(全局)
-- 变量
drop procedure if exists hello world;
delimiter $$
create procedure hello world()
begin
        declare name varchar(20) default '张飞';
        declare sal1 int(20) default 0;

-- 查询name的值
        select name ;
        -- 查询出结果赋值给name,但不输出结果    赋值方法1
        select ename ,sal into name , sal1  from emp where empno = 10005 ;
        -- 查询name的值
        select name , sal1 ;
        -- 赋值方法2
        set name = '李白';
        -- 查询name的值
        select name ;
end $$

call hello world();

drop procedure if exists hello world;
create procedure hello world()
begin
        declare emp_name varchar(20) default '小豆';    -- 作用域
        set emp_name = '小红' ; -- 给局部变量赋值为小红
        set @name = '小白';     -- 全局变量
        select emp_name , @name ;
end

call hello world();

select  emp_name ;
select  @name ;

drop procedure if exists hello world;
create procedure hello world()
begin
        declare emp_name varchar(20) default '小豆';    -- 作用域
        select emp_name , @name ;
end

set @name = '小白';     -- 全局变量
call hello world() ;

五、输出参数

-- 1输出参数
drop procedure if exists hello world;
create procedure hello world( out name varchar(20) )
begin
        select name ;
        select ename into name from emp where empno = 10001;
        select name ;
end

set @name = '小白';

select @name ;
call hello world( @name );

select @name ;

-- 2示例
drop procedure if exists hello world;
create procedure hello world( out name varchar(20) )
begin
        select name ;
        set name = @name ;
        select name ;
end

set @name = '小白';
call hello world( @name );

select @name;

drop procedure if exists hello world;
create procedure hello world( out name varchar(20) )
begin
        set name= '小河' ;
end

set @name = '小韦' ;

call hello world(  @name  ) ;

select @name ;

-- 变量的生命周期,存在于数据开启时,一旦关闭或重启数据库,变量则失去

-- 输入输出参数
drop procedure if exists hello world;
delimiter $$
create procedure hello world( inout name varchar(20) )
begin
            select name ;
            set name = '小红';
end $$
delimiter ;

set @name = '小白'

call hello world( @name );
select @name ;

六、交换变量值(==)

-- 交换两个边量的值
drop procedure if exists hello world;
delimiter $$
create procedure hello world(  )
begin
            declare one int(10) default 11;
            declare two int(10) default 99;
            declare three int(10) default 0;
            select one , two ;  -- 交换之前
            set three = one ;
            set one = two ;
            set two = three ;
            select one , two ;  -- 交换之后
end $$

call hello world(); --输出结果

---------------------元旦加班!!!快下班了,先这样,后续更新构造数据方法---------------------------

procedure存储数据的过程相关推荐

  1. mysql数据库存储数据的过程_[数据库]MySql存储过程总结

    [数据库]MySql存储过程总结 0 2014-06-12 01:00:50 之前总是在MSSQL上写存储过程,没有在MYSQL上写过,也基本没有用过,今天需要用到MYSQL,研究了下,把项目的需要的 ...

  2. 数据存储方式_寻找要操作数据的存储地址的过程称为寻址,几种寻址的方式分享...

    单片机工作时,在程序指令的控制下,对数据进行各种操作(如存取数据.对数据进行运算等),然后输出控制信号.指令要对数据进行操作,必须先找到操作的数据,数据存放在存储器中,只有找到要操作数据的存储地址,才 ...

  3. oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息

    查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * fr ...

  4. Oracle数据库PL/SQL块-存储函数和过程

    PL/SQL块 PL/SQL程序由三个块组成,即声明部分.执行部分.异常处理部分 结构如下: declare​ /*声明部分,在此声明变量,类型及游标*/begin​ /*执行部分,过程及sql语句, ...

  5. 2021年大数据HBase(十三):HBase读取和存储数据的流程

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase读取和存储数据的流程 一.HBase读取数据的流程 ...

  6. string生成固定长度的哈希_Redis 选择Hash还是String 存储数据?

    点击上方"Java之间",选择"置顶或者星标" 你关注的就是我关心的! 作者:goodspeed 微信公众号:四月(ID:hiiiapril) 在stackov ...

  7. DTCC:数据库安全重点在数据拷贝过程中

    本文讲的是DTCC:数据库安全重点在数据拷贝过程中,2017年5月11日-13日,2017中国数据库技术大会于北京国际会议中心盛大开幕.作为国内最受关注的数据库技术大会,本届大会以"数据驱动 ...

  8. 如何完美隐藏Disposable的存储和销毁过程(一)

    如何完美隐藏Disposable的存储和销毁过程(一) –致敬我目前最喜欢的语言Kt 又到了写我最最喜欢的RxJava的时刻了,写点函数式的操作,很多时候都能让我莫名其妙地high的不行! 今天来讲讲 ...

  9. Hello程序的转换处理过程及程序执行时的数据流动过程

    文章目录 1 Hello程序的转换处理过程 2 Hello程序执行时的数据流动过程 1 Hello程序的转换处理过程 经典的" hello.c "C-源程序: hello.c的AS ...

最新文章

  1. oracle列名无效字符,案例学习Oracle错误:ORA-00904 invalid column name
  2. 第十六届全国大学生智能汽车竞赛 讯飞智慧餐厅 全国总决赛竞赛规则
  3. UA MATH564 概率不等式 QE练习题
  4. yolo 负样本_目标检测介绍之YOLO与SSD
  5. Mysql升序排序对为空的排在最后面is null
  6. 卫星系统采用的轨道类型
  7. Redis(3-3):列表类型
  8. 【CF551D】GukiZ and Binary Operations
  9. 18.看板方法---精益的一种经济学模型
  10. 天津智慧路灯+“新基建”示范区建设启动、沪苏通长江公铁大桥
  11. 多元时间序列预测 —— 向量自回归(VAR)
  12. 教你简单制作视频滚动字幕
  13. 百度网站收录批量查询 介绍百度网站收录批量查询3种方式
  14. 鸟与虫(六)拉勾网,我可不可以找到工作
  15. uniapp 金额输入框
  16. android dialog遮挡键盘,彻底解决软键盘遮挡DialogFragment
  17. 面试题----单链表实现栈
  18. qq屏幕识图如何一次复制所有文字
  19. 太给力了!40000字整理了机器学习面试200题!
  20. [W pthreadpool-cpp.cc:90] Warning:Leaking Caffe2 thread-pool after fork.(function pthreadpool)

热门文章

  1. 黄帝内经.素问.热论篇(31)
  2. 【产业互联网周报】财报季:阿里云上半年营收245.6亿,市场份额连续四个季度增长,还将全面服务北京城市大脑建设...
  3. 记录idea整合git 创建分支 合并分支提交
  4. 汇编语言实验——大数相乘
  5. 【SAP】没有为会计年度0定义版本2021
  6. php冒泡排序代码及注释,php冒泡排序
  7. python urlopen error_python3 urllib.request.urlopen() 地址打开错误
  8. 上古神器--vim编辑器
  9. 数据链路设备,集线器、网桥、交换机总结
  10. vr全景看房是怎么做的?vr全景看房平台有哪些?