川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

软件工程师是如何测试存储过程的(下)

作者:川石学院 日期:2021-04-27 17:21:16 点击数:

  上一章我们学习了软件测试工程师是如何测试存储过程的(上)部分,今天我们一起来学习存储过程的(下)部分。有不懂的地方可以咨询在线老师,一对一在线解答。

软件工程师是如何测试存储过程的(下)(图1)

  一:条件语句

  条件语句主要有if语句和和case语句两种:

  1、if语句

  If语句分为单条件语句和多条件语句:

  单条件语句语法:

  If( ) then #如果条件成立执行下边语句

  ……

  ……

  Else #如果条件不成立执行下边语句

  ……

  ……

  End if; #if语句结束

  多条件语句基本语法:

  If( ) then #如果满足这个条件执行下边语句

  ……

  Else if ( ) then #如果满足这个条件执行下边语句

  ……

  Else #如果以上条件都不满足执行下边语句

  ……

  End if; #if语句结束

  实例1:(调用存储过程传入参数值如果大于30,则把大于等于该该年龄的学生删除,否则输出等于该参数值的学生)

  CREATE DEFINER=`root`@`localhost` PROCEDURE `test3`(in age int)

  BEGIN

  if (age >30) then

  DELETE from student where sage>=age;

  else

  select * from student where sage=age;

  end if;

  END

  运行结果:

  入参为9结果如下:(执行了else部分)  

软件工程师是如何测试存储过程的(下)(图2)

  实例2:

  CREATE DEFINER = CURRENT_USER PROCEDURE `test4`(in iname VARCHAR(20))

  BEGIN

  DECLARE avgscore int DEFAULT 0;

  select avg(score) into avgscore from student st ,sc where st.sno=sc.sno and sname=iname;

  if (avgscore>80) then

  update student set type="优秀" where sname=iname;

  else if (avgscore>60)

  then

  update student set type="合格" where sname=iname;

  else

  update student set type="不合格" where sname=iname;

  COMMIT;

  end if;

  select type from student where sname=iname;

  end

  运行结果  

软件工程师是如何测试存储过程的(下)(图3)

  2、case语句

  Case语句语法结构:

  Case variable

  When 0 then #当variable值等于0时执行这一条

  ……

  ……

  When 1 then #当variable值等于1时执行这一条

  ……

  ……

  When 2 then #当variable值等于2时执行这一条

  ……

  ……

  Else #当variable值不等于以上任意一条时执行这一条

  ……

  ……

  End case; #case语句结束

  实例:(输入员工姓名,如果查出来性别为0,则在员工性别表种将该员工工号、姓名、性别male插入;如果查出来性别为1,则在员工性别表种将该员工工号、姓名、性别female插入。)

  CREATE DEFINER=`root`@`localhost` PROCEDURE `test5`(in empname VARCHAR(20))

  BEGIN

  DECLARE ssex int DEFAULT 0;

  select sex into ssex from emp where ename=empname;

  case ssex

  when 0 then

  INSERT into emp_sex select empno,ename,'male' from emp where ename=empname;

  when 1 then

  INSERT into emp_sex select empno,ename,'female' from emp where ename=empname;

  end case;

  COMMIT;

  select * from emp_sex where ename=empname;

  END

  运行结果:  

软件工程师是如何测试存储过程的(下)(图4)

  二:循环语句

  1、while循环语句

  基本语法如下:

  While (条件) do #先判断是否满足循环条件,如果满足执行下边循环体

  ……

  ……

  End while;

  实例:现在测试员正在做并发测试需要模拟一千个不用户同时登录系统的操作,但是系统里现在并没有这么多用户,一条一条的新增和插入显然是不合实际的。但使用存储过程这个问题就能轻易解决。存储过程如下:

  CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_users`()

  BEGIN

  DECLARE num int;

  DECLARE num1 int;

  DECLARE emails VARCHAR(100) default '';

  select user_name+1 into num from ecs_users where user_id=(select max(user_id) from ecs_users);

  set num1=num+100;

  WHILE num

  SELECT CONCAT(num,"@qq.com") as em into emails;

  INSERT INTO ecs_users ( email, user_name, `password`, alias, msn, qq, office_phone, home_phone, mobile_phone, credit_line )

  VALUES( emails, num, 123456, 'zhangsan', 123456, 123456, 123456, 123456, 123456, 0.00 );

  set num=num+1;

  END WHILE;

  END

  运行结果:  

软件工程师是如何测试存储过程的(下)(图5)

  2、repeat循环语句

  基本语法:

  Repeat #先执行下边循环体

  ……

  ……

  Untill (条件) #然后判断是否满足条件,满足就结束循环,不满足再次执行上边循环体

  End repeat;

  注意:while是先判断是否满足条件,满足条件执行循环体,不满足条件结束循环体。而repeat是先执行循环体,然后判断是否满足条件,满足条件结束循环体,不满足条件再次重复执行循环体,两者恰恰相反。

  实例:

  我们把7.1的实例改为repeat格式如下:

  CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_users`()

  BEGIN

  DECLARE num int;

  DECLARE num1 int;

  DECLARE emails VARCHAR(100) default '';

  select user_name+1 into num from ecs_users where user_id=(select max(user_id) from ecs_users);

  set num1=num+100;

  Repeat

  SELECT CONCAT(num,"@qq.com") as em into emails;

  INSERT INTO ecs_users ( email, user_name, `password`, alias, msn, qq, office_phone, home_phone, mobile_phone, credit_line )

  VALUES( emails, num, 123456, 'zhangsan', 123456, 123456, 123456, 123456, 123456, 0.00 );

  set num=num+1;

  untill num>=num1

  END WHILE;

  END

  运行结果和7.1中类似

  软件工程师是如何测试存储过程的(下)部分就讲完了,下期精彩内容敬请期待,大家喜欢的话记得每天来这里和小编一起学习涨薪技能。(笔芯)


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2021-04-27 17:21:16
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2021-04-27 17:21:16
  • 国外的月亮也不一定比国内测试猿的年薪美~2021-04-27 17:21:16
  • 建筑工程专业朱同学成功转行为软件测试人!2021-04-27 17:21:16
  • 财务管理专业转行软件测试月薪甩会计几条街!2021-04-27 17:21:16
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2021-04-27 17:21:16
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2021-04-27 17:21:16
  • 文科生转行软件测试照样拿下高薪15K!2021-04-27 17:21:16
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2021-04-27 17:21:16
  • 毕业1年,迷茫的他最终选择转行软件测试2021-04-27 17:21:16