`

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学习笔记

    【JAVA与Sql学习笔记】 在Java编程中,与SQL数据库的交互是不可或缺的一部分。这篇学习笔记主要关注如何在Oracle数据库中使用PL/SQL的FORALL语句进行批量操作,以及如何利用批绑定(Bulk Binding)来提升性能。此外...

    黑马java教程知识点笔记整理

    【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    Java笔记桌面程序

    【Java笔记桌面程序】 在IT领域,开发个人定制的桌面应用程序是解决特定需求的有效方法。本项目名为"Java笔记桌面程序",它是由一个热衷于编程的开发者为解决其所在公司无法使用网络笔记客户端的问题而自创的。这个...

    教你如何将java代码拷贝到有道云笔记

    而将Java代码整理后存入有道云笔记的过程,既可以帮助开发者整理学习和工作中的代码,也能便于和其他开发者分享交流。 在这个过程中,首先需要使用一个能够处理和格式化代码的工具,如在线代码高亮工具,它能够将...

    java笔记java基础笔记

    ### Java 基础笔记 #### 位运算符 在Java中,位运算符用于处理整数的二进制位。主要包括左移`、右移`&gt;&gt;`以及无符号右移`&gt;&gt;&gt;`。 - **左移运算符 `**:将一个数的二进制表示向左移动指定的位数,高位被丢弃,低位用...

    java笔记 java笔记

    与之相对的是面向过程编程,它侧重于函数和过程。 ##### 6.2 对象的概念 对象是类的实例,包含了该类的所有属性和方法。 ##### 6.3 成员变量和局部变量 - **成员变量**:定义在类中的变量。 - **局部变量**:...

    java基础的详细案例笔记

    "Java基础的详细案例笔记"无疑是一份宝贵的资源,它涵盖了学习Java过程中最核心的概念和实战技巧。这份笔记可能是作者在学习过程中对每个关键知识点的理解与实践总结,对于自我学习或教学都是极具价值的。 首先,...

    java学习好用的笔记

    在程序运行过程中,可能会遇到各种错误,Java通过异常处理机制来捕获并处理这些错误。try-catch-finally语句块用于定义可能出现异常的代码段,catch块捕获异常并进行处理,finally块则确保某些代码无论是否发生异常...

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    (完整版)最全的java学习笔记(必看).pdf

    Java学习笔记 Java是一种流行的编程语言,广泛应用于Android应用程序开发、Web应用程序开发、桌面应用程序开发等领域。以下是Java学习笔记的摘要信息: 一、Java技术基础 * 1.1 编程语言:Java是一种面向对象的...

    Java基础尚硅谷宋红康学习笔记

    3. **数组与集合**:数组用于存储固定数量的同类型元素,而集合框架(如ArrayList、LinkedList、HashSet、HashMap等)则提供了动态存储和操作对象的能力。 4. **异常处理**:Java通过try-catch-finally结构进行异常...

    狂神说JAVA的所有笔记.zip

    这份笔记是作者在深入研究JAVA编程过程中积累的宝贵经验,旨在帮助读者系统性地掌握JAVA这门强大的编程语言。 首先,笔记可能涵盖了JAVA的基础知识,如数据类型、变量、运算符、流程控制(if-else、switch-case、...

    李兴华java word版全部笔记

    Java集合框架是存储和操作数据的重要工具,笔记将详细阐述ArrayList、LinkedList、HashSet、HashMap等各种集合类的使用,以及泛型的概念和应用。读者将学会如何根据需求选择合适的集合类型,以及如何高效地操作集合...

    java数据结构和算法学习笔记

    ### Java数据结构与算法学习笔记知识点总结 #### 一、数据结构概述 数据结构是对数据的一种组织形式,它决定了数据的存储方式以及处理数据的方法。常见的数据结构包括但不限于数组、链表、栈、队列、二叉树、图等...

    JAVA经典教材笔记.pdf

    Java是一种广泛使用的计算机编程语言,具有面向对象、平台无关、安全性高等特点。...教材中所涵盖的知识点广泛,每个章节都紧密结合了Java的实际应用,使得新手在学习过程中能够更好地理解和掌握Java编程。

    达内JAVA培训综合笔记

    此外,还讲解了对象序列化,这是将Java对象转换为字节流的过程,以便于数据传输和持久化存储。 多线程是Java编程中一个重要的高级特性,笔记中详细介绍了Thread线程类及多线程的使用,以及线程池的概念,这些都对于...

    java基础总结大全(笔记).pdf

    Java基础总结大全涵盖了Java编程语言的核心概念,从JVM、JRE和JDK的区别,到环境变量的设置,再到变量的定义和类型转换,深入浅出地讲解了Java的基础知识。 1. JVM、JRE和JDK: - JVM(Java Virtual Machine)是...

    java控制台版笔记本

    此外,`Notebook`类可能会使用数据结构,如数组、ArrayList或LinkedList来存储笔记。每种数据结构都有其优缺点,例如,数组适合已知大小的固定集合,ArrayList提供动态增长但有额外的内存开销,而LinkedList则方便...

    java初级程序员知识笔记

    Java初级程序员知识笔记 Java语言是当前最流行的编程语言之一,对于初级程序员来说,掌握Java基础知识是非常重要的。本笔记涵盖了Java基础知识的方方面面,包括Java基础知识、面试常考问题、项目开发初期常见的问题...

Global site tag (gtag.js) - Google Analytics