当前位置: 首页 > 知识库问答 >
问题:

如何使用jmeter测试返回类型为sys_refcursor的Oracle存储过程?

岳时铭
2023-03-14

我想用JMeter测试一个Oracle存储过程,除了参数之外,我已经做了所有的工作。

下面是我的SQL查询:

宣布outinfo varchar2(20);可输出的SYS_REFCURSOR;开始{call RK_JSCX(?,?)};结束;

public String RK_JSCX() throws Exception {

    RK_JSCX_Response response = null;
    List<RK_JSCX_Outtable> list = null;
    Connection con = null;
    CallableStatement cs = null;
    ResultSet rs = null;
    String sql = null; 
    try {
        sql = "{call RK_JSCX(?,?)}";
        con = ConnectionUtils.getInstance().getConnect();

        if (con.isClosed()) {
            throw new IllegalStateException("ERROR.THE   CONNECTION   ISCLOSED");
        }

        cs = con.prepareCall(sql);
        cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
        cs.registerOutParameter(2, Types.VARCHAR);

        cs.execute();

        rs = (ResultSet) cs.getObject(1);
        list = new ArrayList<RK_JSCX_Outtable>();
        while (rs.next()) {

            RK_JSCX_Outtable out = new RK_JSCX_Outtable(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5), rs.getString(6));

            list.add(out);
        }
        String outInfo = cs.getString(2);
        response = new RK_JSCX_Response(list, outInfo);

    } catch (SQLException e) {

        e.printStackTrace();

    } catch (Exception e) {
        e.printStackTrace();

    }finally {

        try {
            if (rs != null) {
                rs.close();
                if (cs != null) {
                    cs.close();
                }
                if (con != null) {
                    con.close();
                }
            }
        } catch (SQLException e) {

            System.out.println("Exception2");
            e.printStackTrace();
        }
    }
    return JSON.toJSONString(response);
}

共有1个答案

宋望
2023-03-14

这是怎么做的:

>

  • SQL查询:调用RK_JSCX(?,?)

    参数值:OUT、OUT

     Names are what you want
    
      null

  •  类似资料:
    • 我是Oracle的初学者,我声明了这个对象类型: 我希望在我的存储过程中使用该对象: 但是当编译过程时,我得到了这个错误: 错误(2,14):PLS-00201:必须声明标识符“T1” 我怎样才能写出正确的程序?谢谢大家。

    • 我正在尝试编写一个可以返回结果的Java存储过程。我在Oracle网站上找到了这个文档,但是没有一个示例提供返回数据http://docs.oracle.com/cd/B19306_01/java.102/b14187/cheight.htm#CHDJJDGH 我创建了如下软件包: 包体如下 和 Java 代码 我使用SQLDeveloper通过以下指令调用我的过程 执行第二条指令时,我有以下错误

    • 问题内容: 我的包体内有一个proc: 我在包装规格中公开了这一点。 如何在PL SQL Developer(或类似版本)的新SQL窗口中执行此过程? 问题答案: 您可以相对轻松地执行该过程 当然,这只是将游标返回到调用应用程序。它不执行任何操作来从游标中获取数据,对该数据执行任何操作或关闭游标。假设您的目标是向其中写入一些数据(有时对于原型设计很有用,但生产代码不应该依赖该数据),则可以执行以下

    • 下面是我的Oracle存储过程, 我得到以下异常:hibernate:{CALL REPORT_HIBERNATE(?)}org.hibernate.exception.GenericJDBcException:无法执行查询...并且由:java.sql.sqlException:无效的列索引引起 Plz让我知道在Spring中我将如何使用Hibernate注释调用这个存储过程??

    • 我在Oracle中有一个存储过程,如下所示。 我正在从Java调用该过程。我的密码是, 即使我正在获取记录,值也是空的。这意味着如果输出为2行,则while条件执行并打印为空。在SQL Developer中,它工作得很好。提前道谢。

    • 问题内容: 我的团队正在使用基于python的Wiki服务器,该服务器调用SQL Server数据库上的存储过程。理想情况下,我们希望从存储过程中返回整数值(1,0,-1)以显示基本结果。 根据Google Groups上 的2008年主题,pyodbc不支持返回值,因此另一种选择是将结果选择为一行,然后进行检查。还是这样吗?是否有(受支持和记录的)编程方式来检查SQL存储过程的返回值?(如果是这