`

java存储过程

    博客分类:
  • java
阅读更多

转载:http://developer.51cto.com/art/200906/130448.htm

 创建需要的测试表:create table Test(tidvarchar2(10),tnamevarchar2(10));

第一种情况:无返回值.

  1. create or replace proceduretest_a(param1invarchar2,param2invarchar2)as  
  2. begin  
  3. insert into test value(param1,param2);  
  4. end; 

Java调用代码:

  1. package com.test;  
  2. import java.sql.*;  
  3. import java.io.*;  
  4. import java.sql.*;  
  5. public class TestProcA  
  6. {  
  7. public TestProcA(){  
  8. }  
  9. public static void main(String[]args)  
  10. {  
  11. ResultSet rs=null;  
  12. Connection conn=null;  
  13. CallableStatement proc=null;  
  14. try{  
  15. Class.forName("oracle.jdbc.driver.OracleDriver");  
  16. conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test","test","test");  
  17. proc=conn.prepareCall("{calltest_a(?,?)}");  
  18. proc.setString(1,"1001");  
  19. proc.setString(2,"TestA");  
  20. proc.execute();  
  21. }catch(Exceptione){  
  22. e.printStackTrace();  
  23. }finally{  
  24. try{  
  25. if(null!=rs){  
  26. rs.close();  
  27.  
  28. if(null!=proc){  
  29. proc.close();  
  30. }  
  31. if(null!=conn){  
  32. conn.close();  
  33. }  
  34. }  
  35. }catch(Exceptionex){  
  36. }  
  37. }  
  38. }  

 

第二种情况:有返回值的存储过程(返回值非列表).

存储过程为:

  1. create or replace procedur etest_b(param1invarchar2,param2outvarchar2)  
  2. as  
  3. begin  
  4. select tname into param2 from test where tid=param1;  
  5. end; 

Java调用代码:

  1. package com.test;  
  2. import java.sql.*;  
  3. import java.io.*;  
  4. import java.sql.*;  
  5. public class TestProcB  
  6. {  
  7. public TestProcB(){  
  8. }  
  9. public static void main(String[]args)  
  10. {  
  11. Connection conn=null;  
  12. CallableStatement proc=null;  
  13. try{  
  14. Class.forName("oracle.jdbc.driver.OracleDriver");  
  15. conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test","test","test");  
  16. proc=conn.prepareCall("{calltest_b(?,?)}");  
  17. proc.setString(1,"1001");  
  18. proc.registerOutParameter(2,Types.VARCHAR);  
  19. proc.execute();  
  20. System.out.println("Outputis:"+proc.getString(2));  
  21. }catch(Exceptione){  
  22. e.printStackTrace();  
  23. }finally{  
  24. try{  
  25.  
  26. if(null!=proc){  
  27. proc.close();  
  28. }  
  29.  
  30. if(null!=conn){  
  31. conn.close();  
  32. }  
  33.  
  34. }catch(Exceptionex){  
  35.  
  36. }  
  37. }  
  38. }  

第三种情况:返回列表.

由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.要分两部分来写:

  1. create or replace packaget package as  
  2. typet_cursorisrefcursor;  
  3. proceduretest_c(c_refoutt_cursor);  
  4. end;  
  5.  
  6. createorreplacepackagebodytpackageas  
  7. proceduretest_c(c_refoutt_cursor)is  
  8. begin  
  9. openc_refforselect*fromtest;  
  10. endtest_c;  
  11. endtpackage; 

Java调用代码:

  1. package com.test;  
  2. import java.sql.*;  
  3. import java.io.*;  
  4. import java.sql.*;  
  5. public class TestProcB  
  6. {  
  7. public TestProcB(){  
  8. }  
  9. publics tatic void main(String[]args)  
  10. {  
  11. Connection conn=null;  
  12. CallableStatement proc=null;  
  13. ResultSet rs=null;  
  14. try{  
  15. Class.forName("oracle.jdbc.driver.OracleDriver");  
  16. conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:test","test","test");  
  17. proc=conn.prepareCall("{?=calltpackage.test_b(?)}");  
  18.  
  19. proc.registerOutParameter(1,OracleTypes.CURSOR);  
  20. proc.execute();  
  21. while(rs.next()){  
  22. System.out.println(rs.getObject(1)+"\t"+rs.getObject(2));  
  23. }  
  24. }catch(Exceptione){  
  25. e.printStackTrace();  
  26. }finally{  
  27. try{  
  28. if(null!=rs){  
  29. rs.close();  
  30. if(null!=proc){  
  31. proc.close();  
  32. }  
  33. if(null!=conn){  
  34. conn.close();  
  35. }  
  36. }  
  37. }catch(Exceptionex){  
  38. }  
  39. }  
  40. }  

Hibernate调用oracle存储过程

  1. this.pnumberManager.getHibernateTemplate().execute(  
  2.  newHibernateCallback()...{  
  3. public Object doInHibernate(Sessionsession)  
  4. throws HibernateException,SQLException...{  
  5. CallableStatementcs=session.connection().prepareCall("{callmodifyapppnumber_remain(?)}");  
  6. cs.setString(1,foundationid);  
  7. cs.execute();  
  8. returnnull;  
  9. }  
  10.  }); 
分享到:
评论

相关推荐

    DB2Java存储过程.pdf

    ### DB2 Java 存储过程相关知识点 #### 标题:DB2 Java 存储过程 **DB2 Java 存储过程** 主要探讨的是如何在 IBM DB2 数据库环境中利用 Java 编写存储过程。这涉及到 DB2 的一系列产品和服务,特别是与 Java 集成...

    JAVA存储过程详解

    ### JAVA存储过程详解 在Java开发中,存储过程是一种预编译并存储在数据库中的SQL脚本或程序,它可以接收参数、执行复杂的逻辑,并返回结果。利用Java来调用存储过程,可以极大地提高应用程序的性能和安全性。下面...

    java 存储过程使用方法介绍

    ### Java存储过程使用方法介绍 #### 执行概览与背景 在现代数据库系统中,存储过程作为一种封装了复杂逻辑的数据处理单元,在提升应用程序性能、增强数据完整性及简化应用开发方面扮演着重要角色。传统的存储过程...

    java-storeprocedure.rar_java存储过程_java项目

    Java存储过程是Java编程语言与数据库交互的一种技术,主要用于执行在数据库中预编译的SQL语句和数据库特定的函数。在Java项目中,存储过程的使用可以提高应用程序的性能,减少网络传输,同时也可以增强安全性,因为...

    Java存储过程实现Oracle远程逻辑备份与恢复.pdf

    【Java存储过程实现Oracle远程逻辑备份与恢复】 Oracle数据库是一个基于网络计算的系统,它内建了对Java的支持,包括Oracle JVM(Java Virtual Machine),这使得开发者能够在数据库服务器端执行复杂的计算任务,...

    java存储过程返回数据集

    ### Java存储过程返回数据集 #### 标题与描述中的知识点概述 在Oracle数据库中,存储过程返回数据集的功能可以通过定义游标(RefCursor)来实现。与SQL Server相比,Oracle在这一方面需要额外的步骤来进行配置和...

    java存储过程的使用

    Java存储过程的使用是数据库操作中的一个重要环节,它允许开发者在数据库端定义并执行复杂的业务逻辑,从而提高程序性能和数据处理效率。Oracle数据库(ORCL)是广泛使用的数据库管理系统,其中存储过程功能强大,...

    实战 Java 存储过程的编写及在 DB2 上的部署.docx

    Java 存储过程是数据库应用中的一个重要组成部分,尤其在DB2这种支持多种编程语言的数据库系统中,Java存储过程能够提供强大的功能和灵活性。DB2自带JDK并配置好环境,使得开发者可以直接编写和部署Java存储过程,...

    Java存储过程在异构数据库访问中的应用.pdf

    Java存储过程在异构数据库访问中的应用 概述: 在异构数据库访问中,Java存储过程扮演着重要角色。随着企业信息化的发展,异构数据库的使用越来越普遍。为了实现跨数据库平台的数据共享,需要使用异构数据服务技术...

    Oracle9i中Java存储过程的应用.pdf

    Oracle9i是一款由Oracle公司推出的基于网络计算的数据库系统,其独特之处在于集成了Oracle JVM(Java虚拟机),使得在数据库内部可以直接运行Java程序,即Java存储过程。这些过程允许开发人员利用Java语言来实现...

    基于LabVIEW和Java存储过程的数据自动采集接口的实现与应用

    数据自动采集接口的实现需要依托于LabVIEW数据采集技术以及Java存储过程,在LabVIEW数据采集过程中引进Java存储过程,借助此接口可以实现实验室数据向船舶数字化平台的导入,有效节省人工操作环节。文章首先对LabVIEW...

    JAVA存储过程在Oracle数据库中的应用研究.pdf

    【JAVA存储过程在Oracle数据库中的应用研究】 Oracle数据库作为全球广泛应用的关系型数据库系统,提供了丰富的功能,包括SQL和PL/SQL编程语言,用于处理数据库逻辑层面的开发。然而,对于某些复杂的非数据库逻辑...

    JAVA存储过程講義與範例

    **JAVA存储过程详解与示例** 在数据库管理中,存储过程是预编译的SQL语句集合,可以封装复杂的业务逻辑,并在需要时调用。在JAVA编程环境中,我们可以利用JDBC(Java Database Connectivity)来创建、执行和管理...

    java存储过程函数案例.ppt

    Java存储过程和函数是数据库操作中的重要组成部分,它们在Java应用程序与数据库交互时起到关键作用。存储过程是在数据库中预编译的SQL语句集合,而函数则返回一个值。这两种技术都允许开发者封装复杂的逻辑,提高...

    如何从 Java 存储过程将 JDBC ResultSet 作为 Ref Cursor 返回.doc

    在Oracle9i之前的版本,直接从Java存储过程返回ResultSet是不被支持的,因为缺乏ResultSet到REF CURSOR的映射机制。然而,Oracle9i引入了这种映射,使得Java存储过程能够返回ResultSet或作为OUT参数传递。尽管如此,...

    JAVA调用ORACLE存储过程通用类

    ### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...

    java 调用存储过程 实例

    在Java编程中,调用数据库的存储过程是常见的任务,特别是在处理复杂的业务逻辑或数据操作时。本实例将深入探讨如何使用Java来调用Oracle数据库中的存储过程。 首先,我们需要了解存储过程的基本概念。存储过程是预...

    java存储过程demo

    java mysql存储过程demo

Global site tag (gtag.js) - Google Analytics