java怎样将一组对象传入Oracle存储过程
注:本文来源 《 java怎样将一组对象传入Oracle存储过程 》
java怎样将一组对象传入Oracle存储过程
java怎样将一组对象传入Oracle存储过程。须要注意的是jar包是有要求的,假设使用不当会导致仅仅有数字能传过去,字符串传只是去。
假设是Oracle11g则须要选用例如以下的jar包,F:\app\Administrator\product\11.2.0\dbhome_1\jlib\orai18n.jar、D:\program\weblogic\oracle_common\modules\oracle.jdbc_11.2.0\ojdbc6.jar
1:存储过程
1 CREATE OR REPLACE TYPE TEST_OBJECT AS OBJECT
2 (
3 id number,
4 name varchar2(32)
5 );
6 CREATE OR REPLACE TYPE TABLES_ARRAY AS VARRAY(100) OF TEST_OBJECT;
7 drop table test purge;
8 create table test
9 (
10 id number,
11 name varchar2(32)
12 );
13 create or replace procedure t_list_to_p(arr_t in tables_array)
14 is
15 begin
16 for i in 1..arr_t.count loop
17 insert into test values(arr_t(i).id,arr_t(i).name);
18 end loop;
19 commit;
20 end t_list_to_p;
2:Java 实现逻辑代码
1 import java.sql.CallableStatement;
2 import java.sql.Connection;
3 import java.sql.DriverManager;
4 import java.sql.SQLException;
5 import java.util.ArrayList;
6 import java.util.List;
7 import oracle.sql.ARRAY;
8 import oracle.sql.ArrayDescriptor;
9 import oracle.sql.STRUCT;
10 import oracle.sql.StructDescriptor;
11
12 public class TestListToProcedure {
13 static final String driver_class = "oracle.jdbc.driver.OracleDriver";
14 static final String connectionURL = "jdbc:oracle:thin:@10.150.15.150:1521:orcl";
15 static final String userID = "test";
16 static final String userPassword = "test";
17 public void runTest() {
18 Connection con = null;
19 CallableStatement stmt = null ;
20 try {
21 Class.forName (driver_class).newInstance();
22 con = DriverManager.getConnection(connectionURL, userID, userPassword);
23 StructDescriptor tDescriptor = StructDescriptor.createDescriptor("TEST_OBJECT", con);
24 List<STRUCT> structs = new ArrayList<STRUCT>();
25 Object[] tObject = null ;
26 //能够将系统中VO,DTO转化成Object对象,先创建struts
27 for(int i = 0; i<10; i++){
28 tObject = new Object[2];
29 tObject[0] = i;
30 tObject[1] = "name"+i;
31 STRUCT tStruct = new STRUCT(tDescriptor, con, tObject);
32 structs.add(tStruct);
33 }
34 ArrayDescriptor arrayDescriptor = ArrayDescriptor.createDescriptor("TABLES_ARRAY", con);
35 ARRAY tArray = new ARRAY(arrayDescriptor, con, structs.toArray());
36 stmt = con.prepareCall("{call t_list_to_p(?
37 )}");
38 stmt.setArray(1, tArray);
39 stmt.execute();
40 } catch (SQLException e) {
41 e.printStackTrace();
42 } catch (Exception e) {
43 e.printStackTrace();
44 }finally{
45 if(stmt != null){
46 try {
47 stmt.close();
48 } catch (SQLException e) {
49 e.printStackTrace();
50 }
51 }
52 if(con != null){
53 try {
54 con.close();
55 } catch (SQLException e) {
56 e.printStackTrace();
57 }
58 }
59 }
60 }
61 public static void main(String[] args) {
62 TestListToProcedure testListToProcedure = new TestListToProcedure();
63 testListToProcedure.runTest();
64 }
65
66 }
67
68
java怎样将一组对象传入Oracle存储过程的更多相关文章
- java如何将一个List传入Oracle存储过程
注:本文来源于 深圳gg < java如何将一个List传入Oracle存储过程 > 一:数据库端建一个PL/SQL的数组. CREATE OR REPLACE TYPE tabl ...
- java怎样将一个List传入Oracle存储过程
java怎样将一个List传入Oracle存储过程.样例例如以下: 数据库端建一个PL/SQL的数组. CREATE OR REPLACE TYPE tables_array AS VARRAY(10 ...
- 数组做为参数传入Oracle存储过程操作数据库
p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; text-align: justi ...
- oracle——存储过程参数
oracle 存储过程类型: 1.in:输入类型,即由应用程序将数据传入oracle存储过程中:这种参数在存储过程中是只读参数,在存储过程中无法对该类型的参数进行修改: 2.out:输出参数,是在存储 ...
- 用java调用oracle存储过程总结(转)
//1.call+包名+存储过程名(传入.传出值用?) String str="{call SMSBUSINESS.deleteZhZMember(?,?,?)}"; //2.建立 ...
- 用java调用oracle存储过程总结
以前一直没有动存储过程是用来干嘛的,后来请教朋友才换为自己的理解方式,用自己通俗的语言来说,就是把sql语句换为一个过程,也可以说是一个方法,每次直接给参数调用就好,使用存储过程查询速度快,系统只编译 ...
- 用java 调用oracle存储过程总结
SSM-Mybatis调用Oracle存储过程返回结果集(游标)示例 https://www.jianshu.com/p/0ae6d9d66d61 用java调用oracle存储过程总结 //1.ca ...
- Oracle存储过程入参传入List集合的小例子
第一步:创建一个对象类型 create or replace type STUDENT as object( id ), name ), age ) ); / 第二步:创建一个数组类型 (任意选择下面 ...
- oracle存储过程(返回列表的存储结合游标使用)总结 以及在java中的调用
这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励. 以下是我在开发项目中第一次 ...
随机推荐
- 修改输入框placeholder的样式
1. h5页面: //修改placeholder 样式 (chrome,其余类似加前缀) ::-webkit-input-placeholder { color:rgba(21,30,38,0.35) ...
- 2017CCPC秦皇岛 M题Safest Buildings&&ZOJ3993【复杂模拟】
题意: 给出两个半径R,r,R表示第一次的大圈半径,r表示第二次的小圈半径.第一次大圈的圆心位于(0,0),第二次小圈的圆心未知,但在大圈内,给你一个n,然后给出n个屋子的位置,问这些屋子中,第二次在 ...
- linux switch 跳转到 ”跳转至 case 标号“ 的错误
参考链接: http://blog.csdn.net/qustdjx/article/details/8636489
- linux udp 函数说明
int recvfrom(int sockfd,void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen) ...
- zabbix系列 ~ 如何更好的利用mysql监控
一 简介:今天来聊聊一些关于mysql 监控需要关注的问题二 实现的原理 1 global status 2 variables 三 我们需要关注的zabbix性能图 1 事务类型 ...
- Spring的aop操作
1 在spring里面进行aop操作,使用aspectj实现(1)aspectj不是spring一部分,和spring一起使用进行aop操作(2)Spring2.0以后新增了对AspectJ支持2 使 ...
- 论文笔记系列-Speeding Up Automatic Hyperparameter Optimization of Deep Neural Networks by Extrapolation of Learning Curves
I. 背景介绍 1. 学习曲线(Learning Curve) 我们都知道在手工调试模型的参数的时候,我们并不会每次都等到模型迭代完后再修改超参数,而是待模型训练了一定的epoch次数后,通过观察学习 ...
- 【Math for ML】线性代数之——向量空间
I. Groups 在介绍向量空间之前有必要介绍一下什么Group,其定义如下: 注意定义中的\(\bigotimes\)不是乘法,而是一种运算符号的统一标识,可以是乘法也可以是加法等. 此外,如果\ ...
- openstack Q版部署-----Mysql、MQ、Memcached安装配置(2)
一.安装mysql(contorller) 安装软件包: yum install -y mariadb mariadb-server python2-PyMySQL 配置my.cnf文件 vi /et ...
- Zookeeper环境搭建
zookeeper支持windows.linux.mac等操作系统,其搭建方式也有集群.伪集群.单机环境.下面研究三种方式的搭建. 单机环境:windows操作系统 伪集群:windows 集群:li ...