在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程序段。
相关推荐
11. **PL/SQL与Java、C等其他语言的互操作性**:Oracle提供了与多种编程语言接口的机制,手册会讲解如何在PL/SQL中调用外部程序或被其他程序调用。 12. **调试和错误诊断**:最后,手册会介绍如何使用Oracle提供的...
这些子程序可以被其他PL/SQL代码调用,实现代码复用和模块化。 - **包**:包是一种封装一组相关对象(如子程序、游标、类型等)的方式,有助于提高代码的可维护性和重用性。 #### 三、PL/SQL程序数据 - **变量与...
14. **PL/SQL与Java集成**:通过PL/SQL调用Java存储过程,实现两种技术的融合。 通过"Oracle Database 12c PL/SQL开发指南"中的实例源代码,读者可以亲手实践上述各种概念和技术,从而更深入地理解和掌握PL/SQL的...
13. **PL/SQL与Java、.NET等其他平台的集成**:讲解如何使用Oracle的JDBC驱动或ODP.NET与PL/SQL交互,实现跨平台的应用程序开发。 14. **最佳实践**:教材可能还会提供编写高效、可读性强、易于维护的PL/SQL代码的...
- `JFile.java`:这看起来是一个Java文件,可能与PL/SQL交互,使用Java调用PL/SQL存储过程或反之亦然。 - `utlfile.ora`:这可能是UTL_FILE包的配置文件,定义了文件操作的一些设置。 - `cah.pkg`:未提供具体...
6. **兼容性**:PL/SQL可以与多种开发工具和编程语言(如Java、C#)协同工作,增强了其适用范围。 #### 三、PL/SQL的结构与组成部分 PL/SQL程序的基本结构由三个部分组成: 1. **声明部分(DECLARE)**:定义变量、...
10. **数据库连接和调用接口**:PL/SQL可以与其他编程语言(如Java、C++)交互,通过Oracle Call Interface (OCI)或JDBC调用PL/SQL过程,实现跨平台的数据访问和处理。 通过《ORACLE PL/SQL程序设计第五版》,你将...
虽然目前来看 PL/SQL Developer 的功能远不如 SQL Developer,但它是用纯 JAVA 开发的 ORACLE 数据库管理工具,所以可以比较轻松的支持跨操作系统平台使用,可以在非 windows OS 上使用。由于 PL/SQL Developer 在 ...
14. **PL/SQL与Java、C等语言的集成**:Oracle数据库提供了与这些语言交互的接口,如JDBC(Java Database Connectivity)和ODPI-C,使得PL/SQL可以与这些高级语言协同工作。 通过阅读《Oracle PL/SQL》这本书,法语...
10. **与Java、C++等语言的接口**:Oracle提供API,如JDBC和ODBC,使得其他编程语言能够调用PL/SQL编写的存储过程和函数。 "PLSQLDevepler"可能是PL/SQL Developer的缩写,这是一个流行的PL/SQL集成开发环境(IDE)...
PL/SQL的程序结构类似于其他面向过程的语言,如C或Java。一个完整的PL/SQL块由声明部分、执行部分和异常处理部分组成。声明部分用于定义变量、常量、游标等;执行部分包含了程序的主要逻辑;异常处理部分则用于捕获...
最后,书中可能还会涵盖PL/SQL在实际项目中的应用案例,比如如何使用PL/SQL构建复杂的业务逻辑,如何与其他编程语言(如Java、C#)集成,以及如何使用PL/SQL处理数据库的并发问题。 总之,《PL/SQL程序设计》这本书...
- **第10章**:PL/SQL与外部语言的交互,如Java和C。 - **第11章**:动态SQL的使用技巧。 4. **新特性章节** - **第12章**:Oracle Database 11g的新特性介绍。 - **第13章**:版本基于的重新定义能力。 - **第...
Java开发工具PL/SQL Developer是一款专为Oracle数据库开发者设计的强大集成开发环境,它以其便捷的SQL编辑、数据库对象管理以及PL/SQL编程功能而受到广大程序员的青睐。在这个压缩包中,包含的主要文件是PLSQL...
Oracle数据库提供了Java存根(Java Stubs)和Java源代码(Java Source)功能,允许在PL/SQL中调用Java方法。这可能意味着这些示例中包含了一些如何在PL/SQL中嵌入Java代码,进行跨平台的数据库操作的例子。 总的来...
4. **集成性**:PL/SQL可以与Java、.NET等其他编程语言集成,使得开发人员可以利用这些语言的优点来构建更复杂的应用程序。 ##### 1.2 PL/SQL的主要特点 PL/SQL的一些关键特点包括: - **变量和数据类型**:PL/...
Java开发者可以通过JDBC(Java Database Connectivity)接口调用PL/SQL编写的存储过程,实现高效的数据处理和业务逻辑。 总的来说,PL/SQL 7.5开发工具是Oracle数据库开发人员的重要工具,尤其适合那些需要处理大量...
标题中的“PL/SQL ExcelDocumentType”提示我们讨论的主题与Oracle数据库中的PL/SQL编程语言有关,特别是关于处理Excel文档的部分。在Oracle数据库环境中,PL/SQL是一种过程化语言,用于编写存储过程、函数、触发器...