`

java与储存过程笔记

SQL 
阅读更多

一个简单的java调用储存过程

package com.topband.testmain;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;

public class t {
  
   public static void main(String[] args ){
     String driver = "oracle.jdbc.driver.OracleDriver";
     String strUrl = "jdbc:oracle:thin:@192.168.8.88:1521: testoa";
     Statement stmt = null;
     ResultSet rs = null;
     Connection conn = null;
     System.out.println("输出值");
     try {
       Class.forName(driver);
       conn =   DriverManager.getConnection(strUrl, "数据库名", "密码");
       CallableStatement proc = null;		
       proc = conn.prepareCall("{ call prc_tbtest(?)}");
				    if(proc != null)
				    {
				    	proc.registerOutParameter(1,Types.INTEGER); 
				    	proc.execute(); //提交存储过程
				    	String testPrint = proc.getString(1);
					      System.out.println("输出值"+testPrint);
				    }
     }
     catch (SQLException ex2) {
       ex2.printStackTrace();
     }
     catch (Exception ex2) {
       ex2.printStackTrace();
     }
     finally{
       try {
         if(rs != null){
           rs.close();
           if(stmt!=null){
             stmt.close();
           }
           if(conn!=null){
             conn.close();
           }
         }
       }
       catch (SQLException ex1) {
       }
     }
   }
}

 

create or replace procedure prc_tbtest(res out int) 
is
num_count int;
begin
  execute immediate ' select count(*) from whir$hrresume '
   into num_count;
     if num_count >0
     then
     res :=1;
      else
     res :=2;
     end if;
END prc_tbtest;

 

批量储存

package com.topband.testmain;


import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import com.topband.zhugx.model.POItemBean;

public class CCGC1 {
	    
	public static void main(String arg[]) {
		long t1 = System.currentTimeMillis();
		 List  itemlist= new ArrayList();
//********取值方法未上传			
	
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@192.168.8.88:1521: testoa";
			Connection con = DriverManager.getConnection(url, "数据库","密码");

			CallableStatement pstmt = null;
			String sql = "{call po_itemone(?,?,?,?)}";
			pstmt = con.prepareCall(sql);
			Object[][] object1 = new Object[1][28];
			for (int i = 0; i < 1; i++) {
				POItemBean itembean = (POItemBean) itemlist.get(i);
				
//				object1[i][0] = itembean.getEBELN();
//				object1[i][1] = itembean.getEBELP();
//				object1[i][2] = itembean.getMATNR();
//				object1[i][3] = itembean.getMEINS();
//				object1[i][4] = itembean.getNETPR();
//				object1[i][5] = itembean.getZPEICE_TOTAL();
//				object1[i][6] = itembean.getSTPRS();
//				object1[i][7] = itembean.getLOEKZ();
//				object1[i][8] = itembean.getELIKZ();
//				object1[i][9] = itembean.getRETPO();
//				object1[i][10] = itembean.getREMARK2();
//				object1[i][11] = itembean.getBANFN();
//				object1[i][12] = itembean.getLGORT();
//				object1[i][13] = itembean.getWERKS();
//				object1[i][14] = itembean.getZMAKTX();
//				object1[i][15] = itembean.getMENGE_PR();
//				object1[i][16] = itembean.getMENGE();
//				object1[i][17] = itembean.getSLCY();
//				object1[i][18] = itembean.getJGCY();
//				object1[i][19] = itembean.getWAERS();
//				object1[i][20] = itembean.getKBETR();
//				object1[i][21] = itembean.getEINDT();
//				object1[i][22] = itembean.getMATKL();
//				object1[i][23] = itembean.getYJHSL();
//				object1[i][24] = itembean.getWJHSL();
//				object1[i][25] = itembean.getSjjh();
//				object1[i][26] = itembean.getPodesc();
//				object1[i][27] = itembean.getWj();
				
				object1[i][0] = "88";
				object1[i][1] = "10";
				object1[i][2] = "10";
				object1[i][3] = "10";
				object1[i][4] = "10";
				object1[i][5] = "10";
				object1[i][6] = "10";
				object1[i][7] = "10";
				object1[i][8] = "10";
				object1[i][9] = "10";
				object1[i][10] = "10";
				object1[i][11] = "10";
				object1[i][12] = "10";
				object1[i][13] = "10";;
				object1[i][14] = "10";
				object1[i][15] = "10";
				object1[i][16] = "10";
				object1[i][17] = "10";
				object1[i][18] = "10";
				object1[i][19] = "10";
				object1[i][20] = "10";
				object1[i][21] ="10";
				object1[i][22] = "10";
				object1[i][23] = "10";
				object1[i][24] = "10";
				object1[i][25] = "10";
				object1[i][26] = "10";
				object1[i][27] = "10";
			}
		
			String usid = "2222";
			String org = "33333";
			oracle.sql.ArrayDescriptor desc = oracle.sql.ArrayDescriptor.createDescriptor("ARRAY_OBJECT2", con);			
			oracle.sql.ARRAY array = new oracle.sql.ARRAY(desc, con, object1);
			pstmt.setArray(1, array);
			pstmt.setString(2, usid);
			pstmt.setString(3, org);
		    pstmt.registerOutParameter(4, java.sql.Types.INTEGER);
			pstmt.executeUpdate();
			String testPrint = pstmt.getString(4);
		      System.out.println("输出值"+testPrint);

		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//System.out.println(System.currentTimeMillis() - t1);
	}
}

 

批量储存过程

  ---创建类型对应java  list
 create or replace type srm_item as object(
WHIR$SRMPOITEM_TBEBELN	VARCHAR2(255),
WHIR$SRMPOITEM_TBEBELP	INTEGER,
WHIR$SRMPOITEM_MATNR	VARCHAR2(255),
WHIR$SRMPOITEM_MEINS	VARCHAR2(255),
WHIR$SRMPOITEM_NETPR	NUMBER,
WHIR$SRMPOITEM_ZPEICE_TO	NUMBER,
WHIR$SRMPOITEM_STPRS	NUMBER,
WHIR$SRMPOITEM_LOEKZ	VARCHAR2(255),
WHIR$SRMPOITEM_ELIKZ	VARCHAR2(255),
WHIR$SRMPOITEM_RETPO	VARCHAR2(255),
WHIR$SRMPOITEM_REMARK2	VARCHAR2(255),
WHIR$SRMPOITEM_BANFN	VARCHAR2(255),
WHIR$SRMPOITEM_LGORT	VARCHAR2(255),
WHIR$SRMPOITEM_WERKS	VARCHAR2(255),
WHIR$SRMPOITEM_ZMAKTX	VARCHAR2(255),
WHIR$SRMPOITEM_MENGE_PR	INTEGER,
WHIR$SRMPOITEM_MENGE	INTEGER,
WHIR$SRMPOITEM_SLCY	INTEGER,
WHIR$SRMPOITEM_JGCY	NUMBER,
WHIR$SRMPOITEM_WAERS	VARCHAR2(255),
WHIR$SRMPOITEM_KBETR	VARCHAR2(255),
WHIR$SRMPOITEM_EINDT	VARCHAR2(255),
WHIR$SRMPOITEM_MATKL	VARCHAR2(255),
WHIR$SRMPOITEM_YJHSL	INTEGER,
WHIR$SRMPOITEM_WJHSL	INTEGER,
WHIR$T3067_F3368	VARCHAR2(255),
WHIR$T3067_PODESC	VARCHAR2(500),
WHIR$T3067_FOREIGNKEY	NUMBER(20)
);
    --绑定类型
  CREATE OR REPLACE TYPE ARRAY_object2
  AS table OF srm_item


create or replace procedure po_itemone(
i_item in array_object2,res out int   --item 列表  array_object2 在上述定义过     whir$SRMPOITEM_WJHSL = '||i_item(i).whir$SRMPOITEM_WJHSL||' - whir$SRMPOITEM_ZTSL,
 ) is
num_count int;
zero int;
begin
  for i in 1..i_item.count loop
  execute immediate 'select count(*) from whir$t3067 where whir$SRMPOITEM_TBEBELN = '''|| i_item(i).WHIR$SRMPOITEM_TBEBELN||''' and whir$SRMPOITEM_TBEBELP = '|| i_item(i).WHIR$SRMPOITEM_TBEBELP
   into num_count;
     if num_count >0
     then
     res :=1;
     execute immediate 'update whir$t3067 set 
     whir$SRMPOITEM_MATNR = '''||i_item(i).whir$SRMPOITEM_MATNR||''',
     whir$SRMPOITEM_MEINS = '''||i_item(i).whir$SRMPOITEM_MEINS||''',
     whir$SRMPOITEM_NETPR = '||i_item(i).whir$SRMPOITEM_NETPR||',
     whir$SRMPOITEM_ZPEICE_TO = '||i_item(i).whir$SRMPOITEM_ZPEICE_TO||',
     whir$SRMPOITEM_STPRS = '||i_item(i).whir$SRMPOITEM_STPRS||',
     whir$SRMPOITEM_LOEKZ = '''||i_item(i).whir$SRMPOITEM_LOEKZ||''',
     whir$SRMPOITEM_ELIKZ = '''||i_item(i).whir$SRMPOITEM_ELIKZ||''',
     whir$SRMPOITEM_RETPO = '''||i_item(i).whir$SRMPOITEM_RETPO||''',
     whir$SRMPOITEM_REMARK2 = '''||i_item(i).whir$SRMPOITEM_REMARK2||''',
     whir$SRMPOITEM_BANFN = '''||i_item(i).whir$SRMPOITEM_BANFN||''',
     whir$SRMPOITEM_LGORT = '''||i_item(i).whir$SRMPOITEM_LGORT||''',
     whir$SRMPOITEM_WERKS = '''||i_item(i).whir$SRMPOITEM_WERKS||''',
     whir$SRMPOITEM_ZMAKTX  = '''||i_item(i).whir$SRMPOITEM_ZMAKTX||''',
     whir$SRMPOITEM_MENGE_PR = '||i_item(i).whir$SRMPOITEM_MENGE_PR||',
     whir$SRMPOITEM_MENGE = '||i_item(i).whir$SRMPOITEM_MENGE||',
     whir$SRMPOITEM_SLCY = '||i_item(i).whir$SRMPOITEM_SLCY||',
     whir$SRMPOITEM_JGCY = '||i_item(i).whir$SRMPOITEM_JGCY||',
     whir$SRMPOITEM_WAERS = '''||i_item(i).whir$SRMPOITEM_WAERS||''',
     whir$SRMPOITEM_KBETR = '''||i_item(i).whir$SRMPOITEM_KBETR||''',
     whir$SRMPOITEM_EINDT = '''||i_item(i).whir$SRMPOITEM_EINDT||''',
     whir$SRMPOITEM_MATKL = '''||i_item(i).whir$SRMPOITEM_MATKL||''',
     whir$SRMPOITEM_YJHSL = '||i_item(i).whir$SRMPOITEM_YJHSL||',
     whir$SRMPOITEM_WJHSL = '||i_item(i).whir$SRMPOITEM_WJHSL||' - whir$SRMPOITEM_ZTSL,
     whir$t3067_f3368 = '''||i_item(i).whir$t3067_f3368||''',
     whir$t3067_PODESC = '''||i_item(i).whir$t3067_PODESC||'''
       where  whir$SRMPOITEM_TBEBELN = '''||i_item(i).WHIR$SRMPOITEM_TBEBELN||''' and whir$SRMPOITEM_TBEBELP = '||i_item(i).WHIR$SRMPOITEM_TBEBELP;
     
      else
      -- select WF_SEQUENCE.nextVal into var_item_id from dual;  --取索引下表
    zero :=0;
     res :=2;
      execute immediate 'insert into whir$t3067(whir$t3067_ID,
      whir$t3067_OWNER,
      whir$t3067_ORG,
      whir$SRMPOITEM_TBEBELN,
      whir$SRMPOITEM_TBEBELP,
      whir$SRMPOITEM_MATNR,
      whir$SRMPOITEM_MEINS,
      whir$SRMPOITEM_NETPR,
      whir$SRMPOITEM_ZPEICE_TO,
      whir$SRMPOITEM_STPRS,
      whir$SRMPOITEM_LOEKZ,
      whir$SRMPOITEM_ELIKZ,
      whir$SRMPOITEM_RETPO,
      whir$SRMPOITEM_REMARK2,
      whir$SRMPOITEM_BANFN,
      whir$SRMPOITEM_LGORT,
      whir$SRMPOITEM_WERKS,
      whir$SRMPOITEM_ZMAKTX,
      whir$SRMPOITEM_MENGE_PR,
      whir$SRMPOITEM_MENGE,
      whir$SRMPOITEM_SLCY,
      whir$SRMPOITEM_JGCY,
      whir$SRMPOITEM_WAERS,
      whir$SRMPOITEM_KBETR,
      whir$SRMPOITEM_EINDT,
      whir$SRMPOITEM_MATKL,
      whir$SRMPOITEM_YJHSL,
      whir$SRMPOITEM_WJHSL,
      whir$SRMPOITEM_ZTSL,
      whir$t3067_PODESC,
      WHIR$T3067_FOREIGNKEY)values(hibernate_sequence.nextval,'||zero||','''||zero||''', 
       '''||i_item(i).whir$SRMPOITEM_TBEBELN||''',
       '||i_item(i).whir$SRMPOITEM_TBEBELP||',
       '''||i_item(i).whir$SRMPOITEM_MATNR||''',
       '''||i_item(i).whir$SRMPOITEM_MEINS||''',
       '||i_item(i).whir$SRMPOITEM_NETPR||',
       '||i_item(i).whir$SRMPOITEM_ZPEICE_TO||',
       '||i_item(i).whir$SRMPOITEM_STPRS||',
       '''||i_item(i).whir$SRMPOITEM_LOEKZ||''',
       '''||i_item(i).whir$SRMPOITEM_ELIKZ||''',
       '''||i_item(i).whir$SRMPOITEM_RETPO||''',
       '''||i_item(i).whir$SRMPOITEM_REMARK2||''',
       '''||i_item(i).whir$SRMPOITEM_BANFN||''',
       '''||i_item(i).whir$SRMPOITEM_LGORT||''',
       '''||i_item(i).whir$SRMPOITEM_WERKS||''',
       '''||i_item(i).whir$SRMPOITEM_ZMAKTX||''',
       '||i_item(i).whir$SRMPOITEM_MENGE_PR||',
       '||i_item(i).whir$SRMPOITEM_MENGE||', 
       '||i_item(i).whir$SRMPOITEM_SLCY||',
       '||i_item(i).whir$SRMPOITEM_JGCY||',
       '''||i_item(i).whir$SRMPOITEM_WAERS||''',
       '''||i_item(i).whir$SRMPOITEM_KBETR||''',
       '''||i_item(i).whir$SRMPOITEM_EINDT||''',
       '''||i_item(i).whir$SRMPOITEM_MATKL||''',
       '||zero||',
        '||i_item(i).whir$SRMPOITEM_WJHSL||',
        '||zero||',
       '''||i_item(i).whir$t3067_PODESC||''',
       '||i_item(i).WHIR$T3067_FOREIGNKEY||')';
     
     end if;
     end loop;
END po_itemone;

 

分享到:
评论

相关推荐

    JAVA 与 Sql学习笔记

    1.FORALL 用法小结 2.如何使用批挷定提高性能 3.FORALL 如何影响回滚 4.用%BULK_ROWCOUNT 属性计算FORALL迭代影响行数 ,用%BULK_ROWCOUNT 属性计算FORALL迭代影响行数 ...9.给Oracle存储过程传入数组(这是自己的)

    Java学习笔记

    自己在java学习过程中的笔记,从最基础的创建java环境,java的基础知识,java变量的内存存储过程,到容器,异常,多线程等都有详尽涉及。 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》详细介绍了JVM、JRE、Java SE API、JDK与IDE之间的对应关系。必须要时从Java SE API的源代码分析,了解各种语法在Java SE API中如何应用。  《Java JDK 7学习笔记》将IDE操作纳为教学内容...

    存储过程笔记

    存储过程的笔记,很详细,照着代码敲,包含代码和解释,看看吧!

    Java/JavaEE 学习笔记

    第七章 PL/SQL存储过程................374 第八章 PL/SQL包.380 第九章 PL/SQL触发器....................382 第十章 动态PL/SQL........................383 ant学习笔记...................387 Web Service学习...

    [java]读书笔记整理:一切都是对象

    这一约束限制了程序的灵活性,所以虽然某些java数据存储于堆栈中——特别是对象引用,但是java对象并不存储其中。 3) 堆 一种通用的内存池(也位于RAM区),用于存放所有的java对象。堆不同于堆栈的好处是:编译器...

    Java编程思想读书笔记.rar

    当你产生某个存储对象的数组时,真正产生的其实是存储reference的数组。引数组建立后,其中的每一个reference都会被自动设为null,表示“不指向任何对象”。 二.建立新的数据型别:Class 1. 数据成员和函数 1.1...

    java线程学习笔记

    2.3 线程本地存储(Java.lang.ThreadLocal) 15 2.4 线程阻塞 17 2.4.1 调用sleep(millisecond)使任务进入休眠状态 17 2.4.2 等待输出与输入 17 2.4.3 对象锁不可用 17 2.4.4 通过wait()使线程挂起。 17 2.5 线程...

    云笔记项目源码(含数据库脚本)

    Java云笔记项目是一个基于云技术的在线笔记管理系统。...数据同步与云存储:用户的笔记数据会被存储在云端,确保用户可以随时随地访问和编辑自己的笔记。系统提供数据同步功能,可以在不同设备之间

    存储过程的创建与使用

    简单的存储过程的创建与开发,培训学校的笔记,适合初学者

    Java数据结构和算法笔记.doc

    Java数据结构和算法 第0讲 综述 参考教材:Java数据结构和算法(第二版),[美] Robert lafore 1. 数据结构的特性 "数据结构"优点 "缺点 " "数组 "插入快;如果知道下标,可以非常快"查找慢,删除慢,大小固定" " ...

    Java笔记本

    吸收了C / C ++语言的特点但是去掉了其影响程序健壮性的部分(例如指针,内存申请与释放等),提供了一个相对安全的内存管理和访问机制 特点三:跨平台性 通过Java语言编写的应用程序在不同的系统平台上都能够运行。...

    分布式存储系统笔记

    数据迁移过程中如何保证不影响其他服务) *事务与并发控制(如何实现并发控制?如何实现多版本并发控制) *易用性(如何对外设计接口是的系统容易使用?如何设计监控系统并将系统的内容状态方便的形式暴露给运维...

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...

    jdbc笔记(自写)

    JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统, 这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。 ​ 总结: JDBC本身是java连接数据库...

    课堂笔记_java_

    简单性:因为Java是在C++的基础上进行优化的语言,它既保留了C++强大的开发功能,还剔除了一些程序员工作时比较少用的特征。面向对象:Java是一门面向对象的语言...Java不支持指针,它消除重写存储和讹误数据的可能性;

    JavaThings:共享与Java相关的东西-Java安全漫谈笔记相关内容

    JavaThings-Java安全漫谈笔记相关《 Java安全漫谈》是我在写的一点Java学习相关的随笔,不是很严谨,也不是啥高科技。这个存储库主要是记录并整理一下,附加一些代码。Java安全漫谈目录 人口统计字节码:远程字节码...

    免费分享 Java面试笔记 面试八股文 计算机网络基础

    Java基础:Java概念、基础语法、面向对象的理解、String类、Object类、序列化、泛型、注解与反射、JDK1.8新特性等;Java集合:List底层实现、Map底层实现等;Java并发编程:ThreadLocal、Java内存模型、锁、并发工具...

    Java学习笔记(必看经典)

    JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做...

    Java-study 自学复习笔记.rar

    变量是程序中用来存储数据的容器,可以是基本类型或引用类型,Java中的变量需要先声明后使用,声明变量时需要指定变量的类型和名称。变量的命名需要遵循一定的规则,如不能以数字开头,不能使用关键字作为变量名等...

Global site tag (gtag.js) - Google Analytics