暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在 Oracle 23ai中运行Java存储过程

25


在 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 "除了诱惑,我什么都能抗拒。";
      }
    }
    复制
    将该类保存为 Oscar.java 文件。使用 Java 编译器,在客户端系统上编译.Java文件,如下所示:
      javac Oscar.java
      复制
      编译器输出一个 Java 二进制文件 Oscar.class。
      二、加载和解析 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
            --------------------------------------------------
            除了诱惑,我什么都能抗拒。
            复制
            您还可以使用 ojvmjava 工具调用 Java 类。

            近期文章:

            文章转载自山东Oracle用户组,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论