CREATE TABLE SFZ_TEST_MANAGER_XG(
yxgh VARCHAR2(100),
ygxm VARCHAR2(100),
position_name VARCHAR2(100)
);
CREATE TABLE SFZ_TEST_MANAGER_XG AS select T.CCUST_ID as yxgh,T.ACCS_NBR as ygxm,T.CCUST_NAME as position_name from HEMS_FILTER_CUST_LIST t where t.ccust_id is not null and t.accs_nbr is not null and t.ccust_name is not null;
DROP TABLE SFZ_TEST_MANAGER_XG;
select * from SFZ_TEST_MANAGER_XG;
select count(*) from SFZ_TEST_MANAGER_XG;
create or replace TYPE SFZ_MANAG_M_OBJ_TYPE AS OBJECT(
yxgh VARCHAR2(100),
ygxm VARCHAR2(100),
position_name VARCHAR2(100));
DROP TYPE SFZ_MANAG_M_OBJ_TYPE;
select * from user_objects t where t.object_name not like '%SFZ_MANAG_M_OBJ_TYPE%' and t.object_type = 'TYPE';
CREATE OR REPLACE TYPE SFZ_MANAG_M_TAB_TYPE IS TABLE OF SFZ_MANAG_M_OBJ_TYPE;
DROP TYPE SFZ_MANAG_M_TAB_TYPE;
create or replace procedure proc_sfz_proc_test(user_yxgh IN VARCHAR2,v_table out SFZ_MANAG_M_TAB_TYPE)
is
cursor cursor_cur_type is select * from SFZ_TEST_MANAGER_XG; --可以增加条件
i NUMBER(8) :=1;
BEGIN
v_table:=SFZ_MANAG_M_TAB_TYPE();
for cursor_record in cursor_cur_type loop
v_table.EXTEND;
v_table(i) := NEW SFZ_MANAG_M_OBJ_TYPE(cursor_record.yxgh,cursor_record.ygxm,cursor_record.position_name);
--v_table(i) := NEW SFZ_MANAG_M_OBJ_TYPE('123','124','125');
i:=i+1;
end loop;
end proc_sfz_proc_test;
DROP PROCEDURE proc_sfz_proc_test;
package com.zjhcsoft.test.utl;
import java.sql.Connection;
import java.sql.DriverManager;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.driver.OracleTypes;
import oracle.sql.ARRAY;
import oracle.sql.Datum;
import oracle.sql.STRUCT;
public class TestOracleProc {
/**
* @param args
*/
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
e.printStackTrace();
}
Connection conn = null;
String DBurl = "jdbc:oracle:thin:@134.224.40.73:1521:orcl";
try {
conn = DriverManager.getConnection(DBurl, "hems", "hems");
System.out.println("Getting Connection...");
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(DBurl, "hems", "hems");
long start = System.currentTimeMillis();
OracleCallableStatement cs = (OracleCallableStatement)conn.prepareCall("{call proc_sfz_proc_test(?,?)}");
cs.setString(1, "fruitking");
cs.registerOutParameter(2, OracleTypes.ARRAY,"SFZ_MANAG_M_TAB_TYPE");
cs.execute();
long end = System.currentTimeMillis();
System.out.println("this procedure consumes "+((end-start)/1000)+" excute time.");
start = System.currentTimeMillis();
ARRAY array = (ARRAY)cs.getArray(2);
Datum[] datas = array.getOracleArray();
if(datas.length>0){
System.out.println("this procedure has "+datas.length+" data.");
for (int i = 0; i < datas.length; i++){
if(datas[i]!=null&&((STRUCT) datas[i])!=null){
Datum[] personAttributes = ((STRUCT) datas[i]).getOracleAttributes();
System.out.println("column"+(i+1)+":"+new String(personAttributes[0].getBytes())+", "+new String(personAttributes[1].getBytes())+", "+new String(personAttributes[2].getBytes()));
}else{
System.out.println("datas["+i+"] is null.");
}
}
}else{
System.out.println("this procedure is not result data...");
}
end = System.currentTimeMillis();
System.out.println("show this procedure data consumes "+((end-start)/1000)+" excute time.");
cs.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
通过这种方式,Java程序创建一个包含100个元素的二维数组,每个元素代表一条要插入的数据,然后将其转换为Oracle数组类型,并传递给存储过程执行批量插入。 调用存储过程的好处在于,它减少了与数据库的交互次数,...
在Java中,调用存储过程并传递ARRAY或TABLE参数。例如: ```java CallableStatement cs = connection.prepareCall("{call PROC_NAME(?, ?)}"); ArrayDescriptor arrayDesc = ArrayDescriptor.createDescriptor("MY_...
- **关系数据库**:由二维表组成的数据库。 #### 二、Oracle简介 - **Oracle公司背景**:甲骨文公司,主要生产中间件和数据库产品。 - **发展历程**: - **Oracle8**:基础版本。 - **Oracle8i**:开始支持...
- 矩阵报表是一种特殊的报表形式,常用于展示二维数据。 **11. Report编译出错** - 探讨了常见的Report编译错误及其解决方案。 --- #### 三、Oracle数据库基础 **1. 常用函数** - Oracle提供了丰富的内置函数来...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年发布。它以其“一次编写,到处运行”的特性而闻名,因为Java代码可以被编译成字节码,然后在任何支持Java的平台上运行。Java...
- **二维数组**:实际上是一维数组的元素也是数组的形式。 - **数组常用方法**:Java中提供了多个内置方法来操作数组,如`sort()`用于排序、`equals()`用于比较等。 **2.9 面试题** 针对初学者可能遇到的一些常见...
- **数据库表**:用于存储数据的二维表格,由行和列组成。 - **SQL\*Plus环境**:Oracle提供的交互式命令行工具,用于执行SQL语句和管理数据库。 - **SQL指令**:用于查询、更新、插入和删除数据的标准语言。 #### ...
3. 关系结构模型:关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。常见的有Oracle、mssql、mysql等 二、 主流数据库 数据库名 公司 特点 工作环境 mssql 微软 只能能运行在windows平台,...
实例043 将二维数组中的行列互换 53 实例044 利用数组随机抽取幸运观众 54 实例045 用数组设置JTable表格的列名与列宽 55 3.2 数组操作 57 实例046 数组的下标界限 57 实例047 按钮控件数组实现计数器界面 58 实例...
数据库表是数据的二维表格形式,每个表由列和行组成,列定义了数据类型,行代表具体的数据实例。在本案例中,可能存在一个或多个表来存储菜单的层次结构和相关信息。 4. **yangwen_test_tree_t_org.dmp**:这个...
- **二维数组及其使用**:二维数组本质上是一组一维数组的组合,可以通过索引访问其中的元素。 - **Arrays类操作数组**:Java提供了Arrays类来简化数组的操作,如排序、填充等。 #### 二、Java面向对象 **1. 类和...
9. **对象比较与equals()与hashCode()**: 理解如何正确重写`equals()`和`hashCode()`方法,这对于实现自定义对象的比较和在哈希表中存储对象非常重要。 10. **接口与抽象类**: 接口定义了一组方法签名,而抽象类...
在Java中,有固定大小的一维数组和二维数组等。 2. **链表**:节点之间通过引用相连的数据结构,分为单链表、双链表等。Java中的LinkedList类实现了链表。 3. **栈**:后进先出(LIFO)的数据结构,如Java的Stack类...
3. **知识点**: 二维表的每一行表示关系的一个记录。 - **解释**: 关系数据库中的数据以二维表格形式组织,每行代表一条记录(即实体),每列代表一个属性(即实体的特征)。例如,在学生表中,每行可能代表一个...
IVD:超过20/20微观数据维数或变量等级文件 IVP:超过20/20的用户子集配置文件 IVT:超过20/20表或集合数据文件 IVX:超过20/20微数据目录文件 IW:Idlewild屏幕保护程序 IWC:Install Watch文档 J J62:...