Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中从PL-SQL表中获取数据作为OUT参数_Java_Oracle_Jdbc - Fatal编程技术网

Java中从PL-SQL表中获取数据作为OUT参数

Java中从PL-SQL表中获取数据作为OUT参数,java,oracle,jdbc,Java,Oracle,Jdbc,我正在从java代码执行一个过程,它有两个out参数,其中一个是对象表。下面是软件包的概述 PROCEDURE SalesProc ( p_S_table IN t_s_table , p_T_table IN OUT t_t_table , x_message OUT VARCHAR2 ) t_表是IN-OUT参数,其中包含多个字符串和数字。在执行包之前

我正在从java代码执行一个过程,它有两个out参数,其中一个是对象表。下面是软件包的概述

PROCEDURE SalesProc (
  p_S_table             IN t_s_table
, p_T_table             IN OUT t_t_table           
, x_message             OUT VARCHAR2                     
)

t_表是IN-OUT参数,其中包含多个字符串和数字。在执行包之前,我创建了一个SalesObject数组,并将其设置到其中

在这里,目的是使用resultSet从t_表中获得一些值

我正在努力工作的来源是:

 callstmt.registerOutParameter(2, Types.ARRAY,"T_TABLE");
 callstmt.setArray(2, mySalesObjectArray);
 callstmt.execute();
 java.sql.Array aa = callstmt.getArray(2);
 ResultSet rs = aa.getResultSet();

 while(rs.next()){
     String ss = rs.getString(1);
 }

下面一行给出了“
java.sql.exception

我还尝试将其转换为对象类型,如下所示

 salesObject[] sArray = (salesObject[])callstmt.getArray(2);
这就是抛出classCastException。 “
classcastException.cannotcast java.lang.Object[2][id=16062]到java.lang.String[]



如何避免这些异常?

您有3个参数,计数从最左侧参数的1开始:

  • p_S_表
  • p___表
  • 桌子
  • 我使用Oracle作为DBMS,但没有使用IN/OUT参数,但我确信,如果将您的过程更改为一个函数(因为函数返回某些内容),该函数接受IN参数并返回OUT参数,那么同样的代码也会起作用

    至于这里的演员阵容:

    salesObject[] sArray = (salesObject[])callstmt.getArray(2); 
    
    您的
    salesObject
    类应该实现
    ORAData
    SQLData

    SQLData
    似乎更好

    你有错误吗?T_表的定义是什么?等等。你需要给我们更多的合作机会。“它不起作用”请告诉我们细节。Inb什么方式不起作用?描述观察到的行为,包括错误消息等。如果你不提供详细信息,你将得不到答案。你能发布基本过程的结构(最好是语法)吗?我编辑了问题。请查收。感谢您对
    Object[]
    Object[]sArray=callstmt.getArray(2)
    salesObject[] sArray = (salesObject[])callstmt.getArray(2);