1.首先编写一个测试用的 function

  1. CREATE OR REPLACE FUNCTION getDealmainNo_test(dealdate IN varchar2,
  2. productcodename in varchar2)
  3. /***********************************************************
  4. * linc 2018-01-09
  5. * 方法:获取序列编号
  6. * 入参:成交日期,产品代码
  7. * 返回:序列编号
  8. ***********************************************************/
  9. RETURN varchar2 AS
  10. today varchar2(10);
  11. seqno integer;
  12. begindate varchar2(20) := dealdate || ' 00:00:00';
  13. enddate varchar2(20) := dealdate || ' 23:59:59';
  14. seqnoname varchar2(30);
  15. pragma autonomous_transaction;
  16. BEGIN
  17. seqno := 0;
  18. select to_char(sysdate, 'yyyy-mm-dd') into today from dual;
  19. if today = dealdate then
  20. execute immediate 'select seq_' || productcodename ||
  21. '_no.nextval from dual'
  22. into seqno;
  23. else
  24. begin
  25. select nvl(max(to_number(substr(s.tno, -6))), 0) + 1
  26. into seqno
  27. from (select s.tno
  28. from table_A s
  29. where s.dealdate between
  30. to_date(begindate, 'yyyy-mm-dd hh24:mi:ss') and
  31. to_date(enddate, 'yyyy-mm-dd hh24:mi:ss')
  32. and s.tcode = productcodename) s ;
  33.  
  34. exception
  35. when others then
  36. return '';
  37. end;
  38. end if;
  39. seqnoname := productcodename || replace(dealdate, '-', '') ||
  40. lpad(seqno, 6, '0');
  41. RETURN seqnoname;
  42. END getDealmainNo_test;

2.使用java对func进行调用 每次获得一个最大的成交编号 ;

  1. package main.java.javaprictice;
  2.  
  3. import main.java.C3P0XmlSimplify;
  4. import org.testng.annotations.Test;
  5.  
  6. import java.sql.*;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Date;
  9.  
  10. /**
  11. * Created by linbo.yang on 2018/1/9.
  12. */
  13. public class CallOracleFunc {
  14. Connection conn = null;
  15. CallableStatement callableStatement = null;
  16. PreparedStatement ps = null;
  17. ResultSet rs;
  18.  
  19. public Integer save(String no) {
  20.  
  21. Integer rowCount=null ;
  22. String sql="insert into table_A(dealdate,tno,tdate,tcode) values(?,?,?,?) ";
  23. conn = C3P0XmlSimplify.getInstance().getConnection();
  24. //ddate
  25. SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd HH24:mm:ss");
  26. String date = df.format(new Date());
  27. Timestamp timestamp = Timestamp.valueOf(date);
  28. //dealdate
  29. SimpleDateFormat df1 =new SimpleDateFormat("yyyy-MM-dd");
  30. String dealdate = df1.format(new Date());
  31.  
  32. try {
  33. ps = conn.prepareStatement(sql);
  34. ps.setDate(1,java.sql.Date.valueOf("2018-01-08"));
  35. ps.setString(2,no);
  36. ps.setTimestamp(3,timestamp);
  37. ps.setString(4,"IBO");
  38. rowCount= ps.executeUpdate();
  39. System.out.println("rowCount"+rowCount);
  40. } catch (SQLException e) {
  41. e.printStackTrace();
  42. }finally {
  43. C3P0XmlSimplify.releaseSources(conn);
  44. return rowCount ;
  45. }
  46.  
  47. }
  48.  
  49. public String getDealmainNo() {
  50. String string = null;
  51. try {
  52.  
  53. conn = C3P0XmlSimplify.getInstance().getConnection();
  54. /* ?=call getDealmainNo(?,?);
  55. * 第一个问号(?) 代表输入值,但要制定输入类型:callableStatement.registerOutParameter(1, Types.VARCHAR);
  56. * 第二个问号(?) 代表输入值,通过callableStatement.setString()方法类制定入参的类型 ;
  57. * 。。。。。。。
  58. * */
  59. callableStatement = conn.prepareCall("{?=call getDealmainNo_test(?,?)}");
  60. callableStatement.registerOutParameter(1, Types.VARCHAR);
  61. callableStatement.setString(2, "2018-01-08");
  62. callableStatement.setString(3, "IBO");
  63. callableStatement.execute();
  64. string = callableStatement.getString(1);
  65. System.out.println(string);
  66.  
  67. } catch (Exception e) {
  68. e.printStackTrace();
  69. } finally {
  70. C3P0XmlSimplify.releaseSources(conn);
  71. return string;
  72. }
  73. }
  74. @Test(threadPoolSize = 3,invocationCount = 10,timeOut = 100000)
  75. public void getDealmainNo_() {
  76. CallOracleFunc c=new CallOracleFunc();
  77. String dealmainNo = c.getDealmainNo();
  78. Integer row = c.save(dealmainNo);
  79. System.out.println("dealmainNo="+dealmainNo+" ;row="+row);
  80.  
  81. }
  82.  
  83. public static void main(String[] args) {
  84. CallOracleFunc c=new CallOracleFunc();
  85. String dealmainNo = c.getDealmainNo();
  86. Integer row = c.save(dealmainNo);
  87. System.out.println("dealmainNo="+dealmainNo+" ;row="+row);
  88.  
  89. }
  90.  
  91. }

--数据的相关脚本

  1. create table table_A(
  2. tid number ,
  3. dealdate date ,
  4. tcode varchar2(100),
  5. tno varchar2(100),
  6. tdate timestamp
  7. ) ;
  8. drop table table_A ;
  9. select * from table_A t where t.tid is null ;
  10. delete table_A t where t.tid is null ;
  11. insert into table_A
  12. select v.ID,
  13. v.DEALDATE,
  14. v.PRODUCTCODE,
  15. v.NO,
  16. v.CREATETIME
  17. from v_product_deal_main v ;
  18. insert into table_A(tno,tdate) values(?,?) ;
  19.  
  20. select nvl(max(to_number(substr(s.tno, -6))), 0) + 1
  21. from (select s.tno
  22. from table_A s
  23. where s.dealdate between
  24. to_date('2018-01-08 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and
  25. to_date('2018-01-08 23:00:00', 'yyyy-mm-dd hh24:mi:ss')
  26. and s.tcode = 'IBO') s

使用testng多线程来测试成交编号重复的问题的更多相关文章

  1. testng多线程并行执行测试

    testng多线程并行执行测试 testng多线程并行执行测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力.TestNG允许我们以 ...

  2. Selenium & Webdriver 远程测试和多线程并发测试

    Selenium & Webdriver 远程测试和多线程并发测试 Selenium Webdriver自动化测试,初学者可以使用selenium ide录制脚本,然后生成java程序导入ec ...

  3. 学习使用TestNG进行数据驱动测试

    转自: https://mp.weixin.qq.com/s/8Bd8LEhiC2pu2VMcyNMGlQ 学习使用TestNG进行数据驱动测试 赵吃饭 51Testing软件测试网 前天   学习使 ...

  4. Java接口多线程并发测试 (一)

    本文为作者原创,禁止转载,违者必究法律责任!!! 本文为作者原创,禁止转载,违者必究法律责任!!! Java接口多线程并发测试 一,首先写一个接口post 请求代码: import org.apach ...

  5. testNG之异常测试

    @Test(expectedExceptions = ) 在测试的时候,某些用例的输入条件,预期结果是代码抛出异常,那么这个时候就需要testNG的异常测试,先看一段会抛出异常的代码 exceptio ...

  6. TestNG多线程测试-注解方式实现

    用@Test(invocationCount = x,threadPoolSize = y)声明,invocationCount表示执行次数,threadPoolSize表示线程池大小. packag ...

  7. TestNG 多线程测试

    TestNG以注解的方式实现多线程测试 import org.testng.annotations.Test; public class TreadDemo { // invocationCount ...

  8. 利用Testng注释实现多线程并发测试

    Testng 是一款非常优秀的测试框架,真正从测试角度出发,为测试所想.在测试过程中我们经常会遇到对某一个场景做并发请求,主要想了解该程序在并发时是否会有异常或者没考虑到的其他情况,这时往往不是要做性 ...

  9. TestNG多线程测试-用xml文件实现

    MultiThreadOnXml类: package com.janson.multiThread; import org.testng.annotations.Test; public class ...

随机推荐

  1. pycharm如何显示工具栏

    1.没有工具栏的效果图如下: 2.在view中找到Toolbar打上勾即可显示: 3.工具栏设置成功显示效果图如下: 3.如何显示一个类或方法所在的文件,以及该文件下的所有方法,可以快速定位到该行

  2. CSS中的height与line-height的区别

    <p class='text'>高与行高的区别</p> 那么我要想让这些字上下居中那么可以用宽度和行高控制 .text{ height:25px; line-height:25 ...

  3. UWP 五星评价(不跳转到龟速商店)

    之前写过一篇文章  UWP 五星好评  代码如下 var pfn = Package.Current.Id.FamilyName; await Launcher.LaunchUriAsync(new ...

  4. ASP.NET MVC - PageData的应用

    一.要实现一个功能,在不同的页面放置一段如下的内容,用于采集用户行为信息: <input type='hidden' id='page_id' value='xxxx' /> <sc ...

  5. 使用Fiddler进行APP弱网测试

    一.安装Fiddler 网上说要先安装.NET Framwork4,应该是由于本机已装,所以在安装Fiddler时并没有相关提示. Fiddler安装包:https://www.telerik.com ...

  6. Jmeter+ant+jenkins接口自动化测试 平台搭建(一)

    平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成.Jmeter 支持接口的测试,Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可 ...

  7. [笔试]CVTE 2019提前批 Windows应用开发笔试

    不定项选择(x20) 数据结构 以abcdefg的顺序入栈,不可能出现的出栈顺序 一棵二叉树给出中序遍历和后序遍历结果,求左子树的节点数 操作系统 Linux中用什么指令可以找到文件中所有以" ...

  8. VMware vSphere 6.0 安装及管理手册

    目录 1. VMWARE_VSPHERE安装 1.1. 底层ESXI 安装步骤 1.2. VCENTER安装步骤 1) 准备vCenter安装环境 2) vCenter安装步骤 2. VMWARE_V ...

  9. PCL 库存在vtk的问题导致libproj.so链接错误

    常变现为** No rule to make target '/usr/lib/x86_64-linux-gnu/libproj.so', needed by ××× vtk库的bug导致,目前尚未修 ...

  10. ExternalAccessory串口通信

    ExternalAccessory 使用文档 项目下载地址 前言 公司希望通过串口通信的方式实现苹果手机与公司产品进行通信,通过Lighting接口,也就是苹果的数据线.苹果的API External ...