- 浏览: 602903 次
- 性别:
- 来自: 杭州,长沙
文章分类
- 全部博客 (279)
- Java (30)
- Jsp、Servlet (18)
- Web前端 (56)
- Oracle (31)
- SqlServer (1)
- Jetty (3)
- Tomcat (6)
- Weblogic (11)
- Websphere (2)
- Struts2 (13)
- Spring (5)
- Ibatis (8)
- Hibernate (3)
- Webservice (1)
- C/C++ (2)
- Linux (13)
- Android (1)
- 正则表达式 (3)
- 网络组建 (3)
- 软件工程 (11)
- IDE使用技巧 (20)
- Windows操作技巧 (18)
- 养生之道 (1)
- 杂七杂八 (15)
- 心理保健 (1)
最新评论
-
50854319:
elements[i] = tagArr[i]; 这个需要修改 ...
document.getElementsByName在IE下的bug解决 -
mengsina:
通过楼主的介绍,能够启动client了。但是又遇到了cisco ...
(转)Cisco Systems, Inc. VPN使用过程中常见问题解决方案 -
zzz_robinson:
谢谢,关闭-启动-启动。这个循序对的,否则每次都提示服务没打开 ...
(转)Cisco Systems, Inc. VPN使用过程中常见问题解决方案 -
wuchunjiesp:
总算解决了,THANK楼主,空值问题是TYPE里面参数类型定义 ...
(原创)Ibatis2调用数据库存储过程的相关示例 -
wuchunjiesp:
存储里面是这样的
FOR I IN 1..P_GOODSDI ...
(原创)Ibatis2调用数据库存储过程的相关示例
一:java代码:
1,Bean
public class MObj {
private Long mId;
private String mName;
private Double price;
public void setMId(Long mId) {
this.mId = mId;
}
public void setMName(String mName) {
this.mName = mName;
}
public void setPrice(Double price) {
this.price = price;
}
public Long getMId() {
return (this.mId);
}
public String getMName() {
return (this.mName);
}
public Double getPrice() {
return (this.price);
}
}
2,java测试代码:
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
import oracle.sql.Datum;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;
/**
* @author Leewinq
*
*/
public class TestProcedureList {
private static ARRAY getArray(Connection con, String OracleObj,
String Oraclelist, List listData) throws Exception {
ARRAY array = null;
if (listData != null && listData.size() > 0) {
ArrayDescriptor desc = ArrayDescriptor.createDescriptor(Oraclelist,con);
StructDescriptor structdesc = new StructDescriptor(OracleObj, con);
STRUCT[] structs = new STRUCT[listData.size()];
for (int i = 0; i < listData.size(); i++) {
/*
* result = new Object[3]; // 数组大小应和你定义的数据库对象(AOBJECT)的属性的个数
* result[0] = ((MObj) listData.get(i)).getMId(); //
* 将list中元素的数据传入result数组 result[1] = ((MObj)
* listData.get(i)).getMName(); result[2] = ((MObj)
* listData.get(i)).getPrice();
*/
Object[] result = { ((MObj) listData.get(i)).getMId(),
((MObj) listData.get(i)).getMName(),
((MObj) listData.get(i)).getPrice() };
structs[i] = new STRUCT(structdesc, con, result);
}
array = new ARRAY(desc, con, structs);
}
return array;
}
/**
* @return
*/
private List makeData() {
List list = new ArrayList<MObj>();
MObj m1 = new MObj();
m1.setMId(Long.valueOf(110000000000000061l));
m1.setMName("订单物资一");
m1.setPrice(1888.80);
MObj m2 = new MObj();
m2.setMId(Long.valueOf(110000000000000052l));
m2.setMName("订单物资二");
m2.setPrice(6666.80);
list.add(m1);
list.add(m2);
return list;
}
private Connection getConn() throws Exception {
Class c = Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:ORCL", "xxxx", "xxx");
return conn;
}
public static void main(String[] args) {
TestProcedureList procedureList = new TestProcedureList();
List listData = procedureList.makeData();
Connection conn = null;
try {
conn = procedureList.getConn();
if (conn != null && !conn.isClosed()) {
ARRAY array_ = procedureList.getArray(conn, "AMATERIAL",
"MLIST", listData);
CallableStatement stmt = conn
.prepareCall("{call test_varray(?,?)}");
stmt.setArray(1, array_);
stmt.registerOutParameter(2, Types.VARCHAR);
stmt.execute();
String mName = stmt.getString(2);
System.out.println("从oracle存储过程返回的结果:____________" + mName);
conn.commit();
stmt.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (conn != null && !conn.isClosed()) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
二,Oracle代码:
create table T_list_test
(
list_test_id number(18),
list_test_title varchar(200),
list_test_price number(18,6)
)
CREATE TYPE AMaterial AS OBJECT
(
mid NUMBER(18),
mname NVARCHAR2(200), ----------切记,java对象中的String型,在创建oracle对象时,必须使用 NVARCHAR2,否则拿不到值
mprice NUMBER(18,6)
)
CREATE TYPE mList AS TABLE OF AMaterial;
CREATE OR REPLACE procedure test_varray(list_ IN mList,omName OUT VARCHAR2)
AS
BEGIN
FOR i IN 1..list_.count() LOOP
dbms_output.put_line('第'||i||'个对象的ID为:__________'||list_(i).mid);
dbms_output.put_line('第'||i||'个对象的name为:__________'||list_(i).mname);
dbms_output.put_line('第'||i||'个对象的price为:__________'||list_(i).mprice);
INSERT INTO T_list_test(list_test_id,list_test_title,list_test_price) VALUES (list_(i).mid,list_(i).mname,list_(i).mprice);
END LOOP;
omName := '操作成功!';
END;
SELECT * FROM T_list_test
以上代码,本人测试可以直接运行,请修改对应的数据库连接字符串
发表评论
-
Oracle分页查询语句
2010-04-27 17:42 0Oracle的分页查询语句基 ... -
sqldeveloper2.1启动报无法创建jvm实例错误的解决方法
2010-02-25 13:48 1603SQL Developer 启动时报错: Un ... -
提供大家一个pl/sql developer 8 完全破解补丁(不是loader.exe)
2009-11-10 18:01 9850本人亲自下载测试,完全可用,完美破解,支持目前官方提供的最新版 ... -
Oracle:查找表的主键,外键,唯一性约束,索引
2009-11-04 14:26 29891、查找表的所有索引(包括索引名,类型,构成列): sele ... -
如何启动或关闭数据库的归档(ARCHIVELOG)模式
2009-11-03 13:52 1351Oracle数据库可以运行在2种模式下:归档模式(archiv ... -
oracle子递归查询语句的几个有用的属性
2009-10-20 12:59 18411.如何正确排序: siblings 2.展现 ... -
oracle创建表空间,创建用户
2009-07-22 17:28 1254//创建临时表空间 create temporary tabl ... -
Oracle动态游标入门
2009-07-13 10:14 2571一、最简单的一个动态游标:CREATE OR REPLACE ... -
用java调用oracle存储过程
2009-07-10 11:11 771一:无返回值的存储过程 存储过程为: CREATE OR ... -
oracle job详解
2009-07-07 16:17 2089一、设置初始化参数 job ... -
存储过程中使用dblink,碰到dblink死锁解决方案
2009-07-06 18:03 2455CREATE OR REPLACE PROCEDURE syn ... -
Oracle预定义的21个系统异常类型!
2009-07-06 17:07 1121命名的系统异常 产生原因 ... -
oracle游标使用
2009-07-03 19:07 1349游标: 用来查询数据库,获取记录集合(结果集)的指针,可 ... -
oracle存储过程,游标及循环应用实例
2009-07-03 18:13 7585最近在项目中做了一个关于系统与系统之间数据同步的业务,之前使用 ... -
如何让你的SQL运行得更快
2009-07-01 16:40 724人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否 ... -
用一个实例讲解Oracle的自定义聚集函数
2009-07-01 16:29 1038Oracle数据库的定制功能十分强大。Oracle不但允许用 ... -
对一大表建立索引时应当注意的事项及提高性能
2009-07-01 16:22 1122一、注意事项: 首先,应当考虑表空间和磁盘空间是否足够。我们 ... -
Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)
2009-07-01 11:42 836SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十 ... -
利用oracle快照dblink解决数据库表同步问题
2009-06-30 19:42 1770--名词说明:源——被 ... -
oracle db_link 和触发器实现不同数据库表的同步
2009-06-30 19:35 2140---创建dblink,dblink_test名称,(被同步数 ...
相关推荐
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
9.2.1 示例数据 226 9.2.2 剖析Model子句 227 9.2.3 规则 228 9.3 位置和符号引用 229 9.3.1 位置标记 229 9.3.2 符号标记 230 9.3.3 FOR循环 231 9.4 返回更新后的行 232 9.5 求解顺序 233 9.5.1 行求解...
RMAN 资料档案库数据存储:选项比较 2-9 备份目标 2-11 介质管理 2-12 将快速恢复区与 RMAN 配合使用 2-14 使用 EM 监视快速恢复区 2-16 快速恢复区的空间使用 2-17 V$FLASH_RECOVERY_AREA_USAGE 2-18 备份...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的...
第5章 Oracle存储结构 139 5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表...