在 Oracle 中运行 Java 存储过程的方式与运行 PL/SQL 存储过程相同的方式相同。通常,对 Java 存储过程的调用通常是触发器或 SQLDML 调用的结果。
在调用 Java 存储过程之前,必须将它们加载到 Oracle 数据库实例中并将其发布到 SQL。加载和发布是单独的任务。仅被其他 Java 类引用的Java 类不需要发布。
要自动加载 Java 存储过程,可以使用 loadjava 工具。它将 Java 源代码、类和资源文件加载到系统生成的数据库表中,然后使用 SQL CREATE Java{source|class|resource} 语句将 Java 文件加载到 Oracle 数据库实例中。可以从文件系统、流行的 Java IDE、内联网或互联网上传 Java 文件。
一、创建或重用 Java 类
以下示例创建了一个名为 Oscar 的公共类。它有一个公共的静态方法 quote() ,该方法返回一段文本。
public class Oscar
{
// return a quotation from Oscar Wilde
public static String quote()
{
return "除了诱惑,我什么都能抗拒。";
}
}
复制
javac Oscar.java
复制
使用 loadjava 工具,您可以将 Java 源代码、类和资源文件加载到 Oracle 数据库实例中,在那里它们作为 Java 模式对象存储。可以使用命令行或应用程序运行 loadjava 工具,并且可以指定包括解析器在内的多个选项。
在下面的示例中,loadjava 工具使用默认的 JDBC OCI 驱动程序连接到数据库。必须指定用户名和密码。默认情况下,Oscar 类加载到当前登录的用户模式中。
SQL> connect HR
Enter password: password
SQL> CREATE FUNCTION oscar_quote RETURN VARCHAR2
2 AS LANGUAGE JAVA
3 NAME 'Oscar.quote() return java.lang.String';
复制
三、调用存储过程
可以从 JDBC 和任何可以访问调用规范的第三方语言调用 Java 存储过程。使用 SQLCALL 语句,您还可以从顶层调用存储过程,例如从SQL*Plus 调用。存储过程也可以从数据库触发器调用。
在以下示例中,您声明了一个 SQL*Plus 主机变量:
SQL> VARIABLE theQuote VARCHAR2(50);
复制
然后,调用函数 oscar_quote() ,如下所示:
SQL> CALL oscar_quote() INTO :theQuote;
SQL> PRINT theQuote;
THEQUOTE
--------------------------------------------------
除了诱惑,我什么都能抗拒。
复制

5月18号TiDB社区走进360|聊聊全球视野下的TiDB应用实践!阵容超强大!想要get降本增效大佬秘籍的TiDBer快报名! Oracle 23c 中使用注解 Oracle 23 ai 中 SUM 和 AVG 聚合函数与 INTERVAL 数据类型一起使用 Oracle Control File中的SECTION NUMBERS什么意思? 北纬36度线上的神奇的小城——诸城 诸城方言 自制数字人播报视频 信息系统项目管理师学习笔记(一) Oracle 23c 中列默认值定义为 DEFAULT ON NULL FOR INSERT AND UPDATE Oracle 数据库中的数据质量运算符 在Sybase的Syslogs中我怎么确定Secondary Truncation Point OGG将Oracle的Number数据类型映射为Sybase的Timestamp或者Varbinary 数据类型 Oracle 23c 中的 DBMS_HCHECK 包 在这个喧嚣的世界里,我们都是匆匆过客 如果有一天我不在了(AI音乐创作) OpenAI推出Sora:用AI生成高清视频的魔法工具 香港自由行-游记 软考高项学习笔记 | 一文概括高项49个项目管理过程主要知识点 Oracle Control File中的SECTION NUMBERS什么意思? Windows下Oracle的systimestamp函数的最高精度问题 Oracle Adaptive Plans新特性的个人理解