`
bjtale
  • 浏览: 29638 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

PL/SQL与Java程序互相调用

 
阅读更多

       在PL/SQL中,仍然可以调用Java程序定义的方法。需要注意的是,Java程序中定义的方法必须为static,并且需要通过PL/SQL过程或函数进行方法调用。

       对于简单的Java类,可以直接在PL/SQL中定义并通过oracle进行编译:

create or replace and compile java source named "JavaCase"
as
package com.test;
public class JavaCase {
  public static String getName(String name){
  
   return "This method returns:"+ name;
  }
}

       而稍微复杂的类则需要通过JDK自己编译,使用oracle提供的loadjava utility命令把已经编译完成的clas

 

s文件上传到数据库服务器上。对于已经上传的jar或者class文件,可以使用dropjava命令进行删除:

 

loadjava -user username/pass@ORACLE_SERVER {dir}\HelloWorld.class   

 

       编译完成之后,使用以下命令查看是否有错误:

SQL> show errors java source JavaCase;
没有错误。

       随后,创建可以调用Java方法的函数:

 

 

create or replace function JavaCase(v_name in varchar2)
return varchar2
as
language java name 'com.test.JavaCase.getName(java.lang.String) return java.lang.String';

        创建完毕之后,即可调用该函数来执行对应的Java程序方法:

SQL> select JavaCase('yanh') from dual;

JAVACASE('YANH')
------------------------------------------------------------------------
This method returns:yanh

        同样,使用Java程序也可以调用已经的PL/SQL程序片段;首先在PL/SQL中创建一个函数:

create or replace function searchEmp(no in number) return varchar2 is
  emp_record emp%rowtype;
  empInfo varchar2(600);
begin
  select * into emp_record from emp where empno=no;
  empInfo:='name:'||to_char(emp_record.ename)||', empno:'
                                                  ||to_char(emp_record.empno)||', job:'||to_char(emp_record.job);
  return(empInfo);
end searchEmp;

        该函数接收一个数值类型的参数,返回通过查询语句执行的员工信息字符串。将在Java程序中调用该函数:

package com.any.res;

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

/** 
 * @ClassName: ExecutePlSql 
 * @author Helen
 * @date 2015年8月3日 上午11:34:49  
 */

public class ExecutePlSql {
	private static String url="jdbc:oracle:thin:@localhost:1521:orcl";
	private static String user="scott";
	private static String password="tiger";
	public static void main(String[] args) {
		Connection conn = null;
		CallableStatement csmt = null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection(url, user, password);
			csmt = conn.prepareCall("{? = call searchemp(?)}");
			csmt.registerOutParameter(1, Types.VARCHAR);
			csmt.setInt(2, 7788);
			csmt.execute();
			String retValue = csmt.getString(1);
			System.out.println(retValue);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally{
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(csmt!=null){
				try {
					csmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

       以上方法执行后可得到如下输出:name:SCOTT, empno:7788, job:ANALYST.在调用过程时,具有同样的操作流程,关键API是CallableStatement,这个类允许向数据库发送call命令,执行对应的PL/SQL程序段。

 

分享到:
评论

相关推荐

    pl/sql最新中文手册

    11. **PL/SQL与Java、C等其他语言的互操作性**:Oracle提供了与多种编程语言接口的机制,手册会讲解如何在PL/SQL中调用外部程序或被其他程序调用。 12. **调试和错误诊断**:最后,手册会介绍如何使用Oracle提供的...

    Oracle PL/SQL程序设计(第5版)(上下册)

    这些子程序可以被其他PL/SQL代码调用,实现代码复用和模块化。 - **包**:包是一种封装一组相关对象(如子程序、游标、类型等)的方式,有助于提高代码的可维护性和重用性。 #### 三、PL/SQL程序数据 - **变量与...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    14. **PL/SQL与Java集成**:通过PL/SQL调用Java存储过程,实现两种技术的融合。 通过"Oracle Database 12c PL/SQL开发指南"中的实例源代码,读者可以亲手实践上述各种概念和技术,从而更深入地理解和掌握PL/SQL的...

    Oracle PL/SQL学习官方教材

    13. **PL/SQL与Java、.NET等其他平台的集成**:讲解如何使用Oracle的JDBC驱动或ODP.NET与PL/SQL交互,实现跨平台的应用程序开发。 14. **最佳实践**:教材可能还会提供编写高效、可读性强、易于维护的PL/SQL代码的...

    PL/SQL examples

    - `JFile.java`:这看起来是一个Java文件,可能与PL/SQL交互,使用Java调用PL/SQL存储过程或反之亦然。 - `utlfile.ora`:这可能是UTL_FILE包的配置文件,定义了文件操作的一些设置。 - `cah.pkg`:未提供具体...

    PL/SQL基础编程,实例自写

    6. **兼容性**:PL/SQL可以与多种开发工具和编程语言(如Java、C#)协同工作,增强了其适用范围。 #### 三、PL/SQL的结构与组成部分 PL/SQL程序的基本结构由三个部分组成: 1. **声明部分(DECLARE)**:定义变量、...

    ORALCE PL/SQL程序设计第五版

    10. **数据库连接和调用接口**:PL/SQL可以与其他编程语言(如Java、C++)交互,通过Oracle Call Interface (OCI)或JDBC调用PL/SQL过程,实现跨平台的数据访问和处理。 通过《ORACLE PL/SQL程序设计第五版》,你将...

    PL/SqlDeveloper汉化版

    虽然目前来看 PL/SQL Developer 的功能远不如 SQL Developer,但它是用纯 JAVA 开发的 ORACLE 数据库管理工具,所以可以比较轻松的支持跨操作系统平台使用,可以在非 windows OS 上使用。由于 PL/SQL Developer 在 ...

    oracle_oracle_oraclepl/sql_

    14. **PL/SQL与Java、C等语言的集成**:Oracle数据库提供了与这些语言交互的接口,如JDBC(Java Database Connectivity)和ODPI-C,使得PL/SQL可以与这些高级语言协同工作。 通过阅读《Oracle PL/SQL》这本书,法语...

    PL/SQL免安装版

    10. **与Java、C++等语言的接口**:Oracle提供API,如JDBC和ODBC,使得其他编程语言能够调用PL/SQL编写的存储过程和函数。 "PLSQLDevepler"可能是PL/SQL Developer的缩写,这是一个流行的PL/SQL集成开发环境(IDE)...

    PL/SQL语言的简介

    PL/SQL的程序结构类似于其他面向过程的语言,如C或Java。一个完整的PL/SQL块由声明部分、执行部分和异常处理部分组成。声明部分用于定义变量、常量、游标等;执行部分包含了程序的主要逻辑;异常处理部分则用于捕获...

    PL/SQL程序设计

    最后,书中可能还会涵盖PL/SQL在实际项目中的应用案例,比如如何使用PL/SQL构建复杂的业务逻辑,如何与其他编程语言(如Java、C#)集成,以及如何使用PL/SQL处理数据库的并发问题。 总之,《PL/SQL程序设计》这本书...

    Oracle PL/SQL programming(5th Edition)

    - **第10章**:PL/SQL与外部语言的交互,如Java和C。 - **第11章**:动态SQL的使用技巧。 4. **新特性章节** - **第12章**:Oracle Database 11g的新特性介绍。 - **第13章**:版本基于的重新定义能力。 - **第...

    java开发工具pl/sql

    Java开发工具PL/SQL Developer是一款专为Oracle数据库开发者设计的强大集成开发环境,它以其便捷的SQL编辑、数据库对象管理以及PL/SQL编程功能而受到广大程序员的青睐。在这个压缩包中,包含的主要文件是PLSQL...

    pl_sql.zip_fetch_pl/sql_pl_sql_plsql_plsql java

    Oracle数据库提供了Java存根(Java Stubs)和Java源代码(Java Source)功能,允许在PL/SQL中调用Java方法。这可能意味着这些示例中包含了一些如何在PL/SQL中嵌入Java代码,进行跨平台的数据库操作的例子。 总的来...

    Oracle PL/SQL 高级程序设计

    4. **集成性**:PL/SQL可以与Java、.NET等其他编程语言集成,使得开发人员可以利用这些语言的优点来构建更复杂的应用程序。 ##### 1.2 PL/SQL的主要特点 PL/SQL的一些关键特点包括: - **变量和数据类型**:PL/...

    PL/SQL7.5开发工具

    Java开发者可以通过JDBC(Java Database Connectivity)接口调用PL/SQL编写的存储过程,实现高效的数据处理和业务逻辑。 总的来说,PL/SQL 7.5开发工具是Oracle数据库开发人员的重要工具,尤其适合那些需要处理大量...

    PL/SQL ExcelDocumentType

    标题中的“PL/SQL ExcelDocumentType”提示我们讨论的主题与Oracle数据库中的PL/SQL编程语言有关,特别是关于处理Excel文档的部分。在Oracle数据库环境中,PL/SQL是一种过程化语言,用于编写存储过程、函数、触发器...

Global site tag (gtag.js) - Google Analytics