直接使用java在Oracle数据库中创建函数
Posted
技术标签:
【中文标题】直接使用java在Oracle数据库中创建函数【英文标题】:Creating function in an Oracle database using java directly 【发布时间】:2011-05-05 14:48:12 【问题描述】:我知道可以使用 CREATE JAVA 命令在 oracle 数据库中创建 java 函数 - 看here。我已经阅读了很多关于如何做到这一点的内容,但似乎阅读的越多,阅读的内容就越多。
我想做的很简单。由于我已经非常熟悉 Java,我不想通过学习 PL/SQL 尤其是我正在从事的项目相当小。我也不想过多地使用此功能,我想做的只是如下所示:
1) 在连接到数据库时声明一个函数,例如:
CREATE JAVA AS
public class Example
public static bool returnTrue()
return true;
2) 然后在连接时调用函数:
SELECT Example.returnTrue() FROM DUAL;
这可能吗? 怎么样?
【问题讨论】:
为什么不学习 SQL 以在没有不必要的基础架构的情况下执行该功能? 【参考方案1】:不是直接可以的,还需要一步:
(请注意,您不能在 SQL 可调用函数中返回布尔类型。您必须返回有效的 Oracle SQL 类型,在本例中为字符串)。
创建你的函数:
create or replace and compile java source named returntrue as
public class example
public static String returnTrue() return "TRUE"; ;
您必须创建一个 PL/SQL“包装器”来连接 java 函数和 PL/SQL:
SQL> CREATE OR REPLACE FUNCTION returnTrue
2 RETURN VARCHAR2
3 AS LANGUAGE JAVA
4 NAME 'example.returnTrue() return java.lang.String';
5 /
Function created
SQL> select returntrue from dual;
RETURNTRUE
--------------------------------------------------------------------------------
TRUE
更多信息请关注Oracle documentation。
【讨论】:
【参考方案2】:您对甲骨文的投入程度如何?如果答案介于“相当数量”和“我的生活取决于它”之间,请学习 PL/SQL。在某些方面,它是一种奇怪的语言,但它做得很好,那就是在 SQL 之上提供了一个过程层。如果您的代码所做的比“SQL 之上的过程层”更深入或更复杂,那么您根本不应该使用存储过程。运行您自己的 JVM 并在需要时使用 JDBC。
【讨论】:
以上是关于直接使用java在Oracle数据库中创建函数的主要内容,如果未能解决你的问题,请参考以下文章
Oracle中创建了索引,啥样的原因可能使索引不能正常使用?