java怎样将一个List传入Oracle存储过程。样例例如以下:

数据库端建一个PL/SQL的数组。

  1. CREATE OR REPLACE TYPE tables_array AS VARRAY(100) OF VARCHAR2(32) ;
  2.  
  3. drop table test purge;
  4. create table test
  5. (
  6. name varchar2(32)
  7. );
  8.  
  9. create or replace procedure t_list_to_p(arr_t in tables_array) is
  10. begin
  11. for i in arr_t.first .. arr_t.last loop
  12. insert into test values(arr_t(i));
  13. end loop;
  14. commit;
  15. end t_list_to_p;

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.  
  8. import oracle.sql.ARRAY;
  9. import oracle.sql.ArrayDescriptor;
  10.  
  11. public class TestListToProcedure {
  12. static final String driver_class = "oracle.jdbc.driver.OracleDriver";
  13. static final String connectionURL = "jdbc:oracle:thin:@10.150.15.150:1521:orcl";
  14. static final String userID = "test";
  15. static final String userPassword = "test";
  16. public void runTest() {
  17. Connection con = null;
  18. CallableStatement stmt = null ;
  19. try {
  20. Class.forName (driver_class).newInstance();
  21. con = DriverManager.getConnection(connectionURL, userID, userPassword);
  22. stmt = con.prepareCall("{call t_list_to_p(?
  23.  
  24. )}");
  25. ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("TABLES_ARRAY",con);
  26. List list = new ArrayList();
  27. list.add("张三");
  28. list.add("李四");
  29. list.add("王五");
  30. ARRAY array = new ARRAY(descriptor,con,list.toArray());
  31. stmt.setArray(1, array);
  32. stmt.execute();
  33. } catch (SQLException e) {
  34. e.printStackTrace();
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. }finally{
  38. if(stmt != null){
  39. try {
  40. stmt.close();
  41. } catch (SQLException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. if(con != null){
  46. try {
  47. con.close();
  48. } catch (SQLException e) {
  49. e.printStackTrace();
  50. }
  51. }
  52. }
  53. }
  54.  
  55. public static void main(String[] args) {
  56. TestListToProcedure testListToProcedure = new TestListToProcedure();
  57. testListToProcedure.runTest();
  58. }
  59.  
  60. }

java怎样将一个List传入Oracle存储过程的更多相关文章

  1. java如何将一个List传入Oracle存储过程

    注:本文来源于  深圳gg  < java如何将一个List传入Oracle存储过程   > 一:数据库端建一个PL/SQL的数组. CREATE OR REPLACE TYPE tabl ...

  2. java怎样将一组对象传入Oracle存储过程

    注:本文来源 <  java怎样将一组对象传入Oracle存储过程  > java怎样将一组对象传入Oracle存储过程 java怎样将一组对象传入Oracle存储过程.须要注意的是jar ...

  3. 数组做为参数传入Oracle存储过程操作数据库

    p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; text-align: justi ...

  4. Oracle存储过程创建及调用

    在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...

  5. Oracle存储过程创建及调用(转)

    在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...

  6. oracle——存储过程参数

    oracle 存储过程类型: 1.in:输入类型,即由应用程序将数据传入oracle存储过程中:这种参数在存储过程中是只读参数,在存储过程中无法对该类型的参数进行修改: 2.out:输出参数,是在存储 ...

  7. 用java调用oracle存储过程总结(转)

    //1.call+包名+存储过程名(传入.传出值用?) String str="{call SMSBUSINESS.deleteZhZMember(?,?,?)}"; //2.建立 ...

  8. 用java调用oracle存储过程总结

    以前一直没有动存储过程是用来干嘛的,后来请教朋友才换为自己的理解方式,用自己通俗的语言来说,就是把sql语句换为一个过程,也可以说是一个方法,每次直接给参数调用就好,使用存储过程查询速度快,系统只编译 ...

  9. 用java 调用oracle存储过程总结

    SSM-Mybatis调用Oracle存储过程返回结果集(游标)示例 https://www.jianshu.com/p/0ae6d9d66d61 用java调用oracle存储过程总结 //1.ca ...

随机推荐

  1. idea的ssm搭建(复制)

    1.工具/原料 • apache-tomcat-7.0.63 http://download.csdn.net/detail/lxfhahaha/9778163 • apache-maven-3.3. ...

  2. String 类详解

    StringBuilder与StringBuffer的功能基本相同,不同之处在于StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此效率上StringBuilder类 ...

  3. 虚拟 ​router 原理分析

    上一节我们创建了虚拟路由器“router_100_101”,并通过 ping 验证了 vlan100 和 vlan101 已经连通. 本节将重点分析其中的原理. 首先我们查看控制节点的 linux b ...

  4. SPOJ QTREE4 SPOJ Query on a tree IV

    You are given a tree (an acyclic undirected connected graph) with N nodes, and nodes numbered 1,2,3. ...

  5. luogu 1969 积木大赛

    题目链接 题意 初始序列为全\(0\),可以对序列进行的操作为将\([l,r]\)整体\(+1\),问操作多少次后可以得到序列\(a\). 思路 显然,最优的策略即是先找到整个序列的最小值,整体加上这 ...

  6. 转:[小北De编程手记] : Selenium For C# 教程目录

    写<Selnium For C#>系列文章的初衷是因为有很多朋友问我应该从哪里开始学习自动化测试,于是就为大家写下了这个系列的文章,希望对你有些帮助吧.而我想表达的是Selenium(同时 ...

  7. centos 7 安装git并配置ssh

    一.安装 1.查看是否安装git rpm -qa|grep git 有git加版本号就说明已经安装过了 2.安装git yum install git 3.查看git版本 git version 二. ...

  8. hadoop(三)HDFS 文件系统

    Hadoop 附带了一个名为 HDFS(Hadoop 分布式文件系统)的分布式文件系统,专门 存储超大数据文件,为整个 Hadoop 生态圈提供了基础的存储服务. 本章内容: 1) HDFS 文件系统 ...

  9. linux 常用命令: basename 去掉路径和扩展名

      basename: 去掉路径和扩展名 /bin/basename coreutils-8.4-9.el6.x86_64 basename命令用于去掉路径信息,返回纯粹的文件名,如果指定的文件的扩展 ...

  10. vue element-ui Tabs 标签页实现【更多】功能

    element-ui Tabs本身是没有更多功能的,如果在外边添加一个更多按钮,又非常不好看, 而利用API中Tabs Attributes的before-leave勾子方法可以实现这个功能, 简单P ...