数据库定义
CREATE TYPE t_arr AS OBJECT(
id NUMBER ,
name varchar2(20)
);
CREATE type t_arr_re as table of t_arr;
create or replace procedure test_array(v_cfjg out t_arr_re) is
begin
DECLARE
i number;
v_res_fun pub_res_function%rowTYPE;
-- D_nr dic_cfjg%rowTYPE;
cursor c_fun is
SELECT * FROM pub_res_function f;
BEGIN
i := 0;
v_cfjg := t_arr_re(); --Êý×é³õʼ»¯
open c_fun;
LOOP
fetch c_fun
into v_res_fun;
EXIT WHEN c_fun%NOTFOUND or i > 10;
i := i + 1;
v_cfjg.EXTEND;
-- DBMS_OUTPUT.PUT_LINE(TO_CHAR(D_cfjg.dm));
v_cfjg(v_cfjg.count) := t_arr(v_res_fun.func_id, v_res_fun.func_name);
DBMS_OUTPUT.PUT(to_char(v_res_fun.func_name));
dbms_output.new_line();
END LOOP;
end;
EXCEPTION
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(sqlerrm);
end test_array;
java的调用
public void callPrTest() {
Connection conn = null;
ResultSet rs = null;
CallableStatement stmt = null;
try {
conn = this.getConnection();
stmt = null;
String procName = new StringBuffer().append(
"{ call test_array(?) } ").toString();
stmt = conn.prepareCall(procName);
// stmt.setObject(1, array, oracle.jdbc.OracleTypes.ARRAY);
stmt.registerOutParameter(1, Types.ARRAY,"T_ARR_RE");
stmt.execute();
ARRAY arr = (ARRAY) stmt.getArray(1);
rs = arr.getResultSet();
while (rs.next()) {
STRUCT struct = (STRUCT) rs.getObject(2);
Object[] obs = struct.getAttributes();
for (int i = 0; i < obs.length; i++) {
System.out.println(obs[0] + " " + obs[0].getClass());
}
System.out.println("-------------------------");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
clear(rs, null, conn);
}
}
注意T_ARR_RE,习惯oralce的不分大小写,这里可能就会郁闷下.
这里是必须使用大写的,记下来提醒下!
分享到:
相关推荐
在Oracle数据库的学习过程中,了解并熟练掌握如何在表上建立不同类型的约束是非常重要的一步。这不仅能够帮助我们更好地理解数据的完整性和一致性,还能够提高数据库应用的安全性和性能。下面将详细介绍Oracle数据库...
oralc数据库这本书主要从程序员的角度,也就是开发的角度,对各种数据库系统进行讲解。但数据库的知识并不是只有开发这一块,还包含数据库设计、性能调优及管理(DBA)方面的知识,本书对这部分知识涉及的不多,也不...
关于oralc字符集环境变量的使用
此外,Oracle 提供了多种数据类型,如 `VARCHAR2` 用于存储可变长度的字符串,`NUMBER` 用于存储整数和小数,`DATE` 用于存储日期,`TIMESTAMP` 用于存储精确到秒的时间戳,以及 `BLOB` 用于存储二进制大对象如图片...
在Oracle数据库的学习过程中,用户管理和表的管理是两个基础且重要的概念。 一、Oracle的用户管理 Oracle提供了多级别的认证体系,包括OCAR(Oracle初级工程师认证)、OCP(Oracle认证专家)和OCM(Oracle大师认证...
都是迅雷下载地址,一次复制,全集下载, 包含oracle,Java, 韩顺平.循序渐进学.java.从入门到精通 韩顺平.玩转oralc 韩顺平.linux视频教程 韩顺平.j2ee视频实战教程
Oracle 手工创建数据库是一个涉及多个步骤和技术细节的过程,它要求对Oracle数据库体系结构有深入的理解。以下将详细阐述这个过程: 1. **规划与准备**:首先,你需要明确数据库的目标,比如存储类型、大小、性能...
都是迅雷下载地址,一次复制,全集下载, 包含oracle,Java, 韩顺平.循序渐进学.java.从入门到精通 韩顺平.玩转oralc 韩顺平.linux视频教程 韩顺平.j2ee视频实战教程
- `File.OpenRead(string filePath)`:打开现有文件并返回一个`FileStream`对象。 - `File.AppendText(string filePath)`:追加文本到现有文件。 - `File.Copy(string sourceFilePath, string destinationPath)`:...
在Oracle数据库中,分页查询通常涉及到`ROWNUM`伪列的使用,以限制返回的行数。下面将详细讨论Oracle分页查询的原理、方法以及性能分析。 首先,Oracle的分页查询语句通常有以下结构: ```sql SELECT * FROM ( ...
oracle中针对日期时间的查询,精确到年月日,时分秒的查询
Navicat Premiun 连接Oracle数据库报错 28547 connection to server failed, probable Oracle Net admin error 替换调 原本Navicat Premiun 工具>环境>ICO环境 下的oci.all
本文提供了一个解决方案,利用Windows API函数MultiByteToWideChar(),将中文字符转换为Unicode编码,再通过SQL语句存储到数据库,从而避免乱码的出现。 首先,我们需要理解乱码问题的根本原因。在非Unicode系统或...
同时,你可能需要处理一些边界条件,如当页码过大时返回空结果。 例如: ```java int pageSize = 10; int pageNum = 10; String sql = "SELECT * FROM (SELECT t.*, ROW_NUMBER() OVER (ORDER BY id) AS row_num ...
oralc 最新驱动,基于JDK7的驱动,看网上没有,去官网下了个共享下
oralc常有函数描述,主要是一些常用的函数描述,可以给大家带来方便.