使用Oracle SQL Developer时,我注意到它有一个“ Java”目录(如图所示)。
我假设它的目的是在数据库中存储Java源代码/类代码。我还假设这意味着可以在DBMS中执行Java代码。我查看了帮助文档以证明这一点,但是在 Java Sources 下只能找到以下内容:
可以在数据库中创建和管理Java源。
对于以下任何一项(除1以外)是否为真,我还是不太清楚:
语句2和3中的哪个(如果有)是正确的?如果不是 only ,该目录的目的是什么?将源代码存储在数据库中而不是使用版本控制工具(如git)是否有优势?
答案 0 :(得分:2)
谢谢Alex Poole提供了指向Oracle文档的链接,该链接说明了以下内容:
摘自Oracle "Using Java"文档:
您可以在数据库中编写和加载Java应用程序,因为它是一种具有许多安全功能的安全语言。
[...]客户端调用Java存储过程的方式与调用PL / SQL存储过程的方式相同。
摘自Oracle Java Programming in Oracle Database文档:
Java存储过程与PL / SQL的Java等效和同伴:Java存储过程与PL / SQL紧密集成。您可以从PL / SQL包中调用Java存储过程,并从Java存储过程中调用PL / SQL过程。
Java存储过程是在服务器上编写和部署并从服务器运行的Java程序,就像PL / SQL存储过程一样。您可以使用SQL * Plus之类的产品直接调用它,也可以使用触发器间接调用它。您可以从任何Oracle Net客户端(例如OCI和PRO *或JDBC或SQLJ)访问它。
此外,您可以使用Java开发功能强大的服务器端程序,这些程序可以独立于PL / SQL。 Oracle数据库提供了标准Java编程语言的完整实现以及完全兼容的JVM。
您可以从Java调用现有的PL / SQL程序,也可以从PL / SQL调用Java程序。该解决方案可以保护和利用您的PL / SQL和Java代码,并提供基于Java的Internet计算的优势和机会。
Oracle数据库提供了两种用于访问SQL数据的Java API,即JDBC和SQLJ。这两个API都可以在客户端上使用,而JDBC API也可以在服务器上使用。因此,您可以在客户端和服务器上部署应用程序。
摘自"Stored Procedures and Runtime Contexts"文档:
存储过程是发布到SQL并存储在数据库中以供一般使用的Java方法。要发布Java方法,您可以编写调用规范,该规范将Java方法名称,参数类型和返回类型映射到它们的SQL对应版本。
当由客户端应用程序调用时,存储过程可以接受参数,引用Java类并返回Java结果值。
您可以按照与PL / SQL存储过程相同的方式运行Java存储过程。通常,对Java存储过程的调用是数据库操作的结果,因为它通常是触发器或SQL DML调用的结果。要调用Java存储过程,必须通过调用规范将其发布。
这使我理解:
public class Oscar {
// return a quotation from Oscar Wilde
public static String quote() {
return "I can resist everything except temptation.";
}
}
CREATE FUNCTION oscar_quote RETURN VARCHAR2 AS LANGUAGE JAVA
NAME 'Oscar.quote() return java.lang.String';
VARIABLE theQuote VARCHAR2(50);
CALL oscar_quote() INTO :theQuote;
PRINT theQuote;
如果程序使用标准JVM外部的库,则首先需要通过loadjava
command-line utility加载它们。例如:
loadjava -user USERNAME/password@sid -resolve /path/to/externalLib.jar
答案 1 :(得分:1)
Oracle数据库允许从PL / SQL调用Java代码-详细信息here。上传到数据库的所有Java代码都将显示在Java目录中的SQL Developer中。