意见反馈 oracle认证首页 返回顶部
您现在的位置: 考试大 >> Oracle认证资格考试 >> 综合辅导 >> 文章内容

ORACLE存储过程使用数组参数

来源:考试大   【考试大:助你将考试一网打尽】  2011年1月19日

  环境:Eclipse+Oracle9.0.2+Tomcat5.5

  功能:采用存储过程、type组合来实现批量入库,以节省系统开销,提高效率。

  *

  sql脚本+测试代码:

  * 1)create or replace type t_cableLine_point as object

  (

  ID          NUMBER(10),

  CABLELINEID NUMBER(10),

  ROADPOINTID NUMBER(10),

  ORDERNUM    NUMBER(10),

  REMARK      NUMBER(10)

  )

  * 2)CREATE OR REPLACE TYPE ARRAY_cableLine_point AS table OF t_cableLine_point

  * 3)create table RSC_CABLELINE_POINT

  (

  ID          NUMBER(10) not null,

  CABLELINEID NUMBER(10) not null,

  ROADPOINTID NUMBER(10) not null,

  ORDERNUM    NUMBER(10),

  REMARK      NUMBER(10)

  )

  * 4)create or replace procedure batch_cableline_point(i_object in ARRAY_cableLine_point) is

  begin

  insert into RSC_CABLELINE_POINT

  (ID, CABLELINEID, ROADPOINTID, ORDERNUM, REMARK)

  select ID, CABLELINEID, ROADPOINTID, ORDERNUM, REMARK

  from the (select cast(i_object as ARRAY_cableLine_point) from dual);

  end batch_cableline_point;

  * 5)测试代码:

  package com.nilpower.test;

  import java.sql.Connection;

  import java.sql.DriverManager;

  import java.sql.PreparedStatement;

  public class Test {

  public static void main(String[] args) {

  try {

  Class.forName("oracle.jdbc.driver.OracleDriver");

  String url = "jdbc:oracle:thin:@127.0.0.1:1521:nilpower";

  Connection con = DriverManager.getConnection(url, "scott", "tiger");

  PreparedStatement pstmt = null;

  String sql = "{call batch_cableline_point(?)}";

  pstmt = con.prepareCall(sql);

  Object[][] object1 = new Object[10][5];

  int max = 3615142;// 由于表有索引

  for (int i = 0; i < 10; i++) {

  object1[i][0] = ++max;

  object1[i][1] = 158870593;

  object1[i][2] = 333;

  object1[i][3] = 444;

  object1[i][4] = 555;

  }

  oracle.sql.ArrayDescriptor desc = oracle.sql.ArrayDescriptor

  .createDescriptor("ARRAY_CABLELINE_POINT", con);

  oracle.sql.ARRAY array = new oracle.sql.ARRAY(desc, con, object1);

  pstmt.setArray(1, array);

  pstmt.executeUpdate();

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  }

  备注:如果在入库的过程中发现字符串的值没有入进去,请检查有没有加载该类库nls_charset12.jar

  相关推荐

  Oracle的日志挖掘

  Oracle数据库的JOB操作

  如何释放Oracle服务器过多的连接数

来源:考试大-Oracle认证考试

责编:xxm  评论 纠错

上一页123下一页

 考试大网校:计算机等级考试网络课程试听
课程名称 讲师 优惠价 试听 报 名
 2011全国计算机等级二级公共基础 刘德强 ¥50
试听
 2011全国计算机等级考试二级VF 刘德强 ¥100
试听
 2011全国计算机等级考试二级VB 李琳玲 ¥100
试听
 2011全国计算机等级考试二级C语言 陈翠娥 ¥100
试听
 2011全国计算机等级考试三级网络技术 邱春荣 ¥100
试听
网友跟贴

暂无跟贴,欢迎您发表意见

 
 
跟贴共0
笔 名 :
网友评论仅供其表达个人看法,并不表明考试大同意其观点或证实其描述