Java 调用PL/SQL Array

本文介绍如何使用Java调用Oracle中的PL/SQL存储过程,并获取返回的整数数组。具体步骤包括创建数组类型、实现存储过程及通过Java进行调用的方法。
Java 调用PL/SQL Returning Object Array

实现在java调用返回值是数组的存储过程方法。

1. 数组:CYJ_ARRAY

CREATE OR REPLACE TYPE CYJ_ARRAY is VARRAY(20) OF integer

2. 存储过程:getTestArray()

CREATE OR REPLACE FUNCTION getTestArray RETURN CYJ_ARRAY
AS
l_test CYJ_ARRAY :=CYJ_ARRAY();

begin
FOR i IN 1..10 LOOP
l_test.extend;
l_test(l_test.count) := i;
dbms_output.put_line(l_test(l_test.count));
END LOOP;
RETURN l_test;
END;
3. 调用存储过程的java 类

public class TestOracleReturnArray {


public static void main(String[] args) throws SQLException {
Connection conn = null;
CallableStatement cstmt = null;
ResultSet rs = null;
try {

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora","zzz","sss");

conn.setAutoCommit(false);
String procedure = "{? = call getTestArray() }";// 调用存储过程
cstmt = conn.prepareCall(procedure);
cstmt.registerOutParameter(1, OracleTypes.ARRAY,"CYJ_ARRAY"); //注:type name:区分大小,不是包中的type, 使用包中定义的type如何调用还不知道

cstmt.execute();
ARRAY array = (ARRAY)cstmt.getObject(1);
Object[] items = (Object[])array.getArray();
Object obj;

for (int i = 0; i < items.length; i++) {
obj = items[i];

System.out.println(obj);

} // for
} catch (Exception e) {
e.printStackTrace();
} finally {
//DbConnRestore.connRestore(rs, cstmt, null, conn);
}
}

}
内容概要:本文详细介绍了MySQL中InnoDB存储引擎的逻辑存储结构及其表分区技术。InnoDB的逻辑存储单元由高到低依次为表空间、段、区、页和行,其中表空间包括系统表空间、独立表空间、通用表空间、Undo表空间和临时表空间,每种表空间具有不同的用途和管理方式。文章进一步讲解了表分区的概念与类型,包括RANGE、LIST、HASH、KEY以及多字段COLUMNS分区,阐述了分区的优势如提升查询性能、便于数据维护、支持跨物理设备存储等,并列举了实际SQL操作示例,帮助理解分区表的创建、修改、删除及重组等操作。同时指出了分区的限制条件,如最大分区数量、主键约束要求等。; 适合人群:具备一定MySQL数据库基础,从事数据库开发、运维或架构设计的技术人员,尤其是工作中涉及大数据量表管理与性能优化的1-3年经验研发人员。; 使用场景及目标:①深入理解InnoDB存储机制,优化数据库物理结构设计;②掌握表分区技术,应用于海量数据存储与高效查询场景,如日志系统、订单系统的时间分区设计;③通过分区实现数据归档、快速删除历史数据、提升查询性能等运维目标; 阅读建议:学习时应结合MySQL实际环境动手实践文中提供的SQL命令,重点关注表空间管理和分区策略的选择,理解其对性能和维护的影响,并注意分区使用中的限制条件以避免设计失误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值