Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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传递到oracle 8i_Java_List_Parameters_Oracle8i - Fatal编程技术网

将对象类型的表从java传递到oracle 8i

将对象类型的表从java传递到oracle 8i,java,list,parameters,oracle8i,Java,List,Parameters,Oracle8i,我需要将对象列表(如值表)从java传递到Oracle8i 我正在oracle 8i中尝试以下数据库对象。 这在8i中可能吗? 如果可能的话,请帮我解决 create or replace type GROUP_OBJ as object ( GROUP_TYPE VARCHAR2(32), PARAM_1 VARCHAR2(16), PARAM_2 VARCHAR2(16) ); / CREATE OR REPLACE TYPE GROUP_table

我需要将对象列表(如值表)从java传递到Oracle8i

我正在oracle 8i中尝试以下数据库对象。

这在8i中可能吗?
如果可能的话,请帮我解决

create or replace type GROUP_OBJ as object    (          

 GROUP_TYPE VARCHAR2(32), 
 PARAM_1 VARCHAR2(16), 
 PARAM_2 VARCHAR2(16)
);
/


CREATE OR REPLACE
TYPE GROUP_table AS TABLE OF GROUP_OBJ; 
/

CREATE OR REPLACE PROCEDURE GROUP_TABLE_TEST (TABLE_OBJ IN GROUP_table)
IS

BEGIN
    null;
EXCEPTION
   WHEN OTHERS
   THEN
      ROLLBACK;
END GROUP_TABLE_TEST;

我得到了答案。由于区分大小写的问题,我遇到了麻烦。要传递到Structdescriptor和arraydescriptor的类型名区分大小写。当两者都用大写时,它就起作用了

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;

import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;

public class PassTableOfObject {

      public static void main(String[] args) throws SQLException {
         Connection conn=FucntionTest.getConnection();

            try{

                StructDescriptor itemDescriptor = StructDescriptor
                        .createDescriptor("GROUP_OBJ", conn);

                STRUCT[] structs = new STRUCT[2];
                for (int index = 0; index < 2; index++)
                {

                    String[] params = new String[2];
                    params[0] = "Group "+index;
                    params[1] = "Param  1 "+index;
                    STRUCT struct = new STRUCT(itemDescriptor, conn, params);
                    structs[index] = struct;
                }

                ArrayDescriptor desc = ArrayDescriptor.createDescriptor("GROUP_TABLE", conn);
                ARRAY oracleArray = new ARRAY(desc, conn, structs);



                CallableStatement cs = null;
                cs = conn.prepareCall("{call GROUP_TABLE_TEST(?)}");
                cs.setArray(1, oracleArray);
                cs.execute();
                conn.commit();


                System.out.println("insert procedure executed successfully");                  

                }catch(SQLException e){
                    e.printStackTrace();        
                }finally{
                    conn.close();
                }
      }
}
import java.sql.CallableStatement;
导入java.sql.Connection;
导入java.sql.SQLException;
导入oracle.sql.ARRAY;
导入oracle.sql.ArrayDescriptor;
导入oracle.sql.STRUCT;
导入oracle.sql.StructDescriptor;
公共类PassTableOfObject{
公共静态void main(字符串[]args)引发SQLException{
Connection conn=funcontest.getConnection();
试一试{
StructDescriptor itemDescriptor=StructDescriptor
.createDescriptor(“组对象”,康涅狄格州);
STRUCT[]structs=新结构[2];
对于(int-index=0;index<2;index++)
{
字符串[]参数=新字符串[2];
参数[0]=“组”+索引;
参数[1]=“参数1”+索引;
STRUCT STRUCT=新结构(itemDescriptor、conn、params);
structs[index]=struct;
}
ArrayDescriptor desc=ArrayDescriptor.createDescriptor(“组表”,conn);
数组oracleArray=新数组(desc、conn、structs);
CallableStatement cs=null;
cs=conn.prepareCall({callgroup_TABLE_TEST(?)});
cs.setArray(1,oracleArray);
cs.execute();
conn.commit();
System.out.println(“插入过程成功执行”);
}捕获(SQLE异常){
e、 printStackTrace();
}最后{
康涅狄格州关闭();
}
}
}