当前位置: 首页 > 面试题库 >

从PL / SQL调用Java

宋铭
2023-03-14
问题内容

任何人都可以帮我吗:我想从Pl / SQL,Oracle RDBMS调用一个Java程序,以下是设置

Windows 7计算机,Java安装在C:\ Program Files \ Java \ jdk1.7.0_02

我创建了一个目录来保存Java文件。D:\ Java,其中有一个hello.java文件。

public class Hello
{
  public static String world()
  {
    return "Hello world";
  }
}

可以很好地编译它,并在同一目录中生成.class文件。

由于我必须使用PL / SQL调用此函数,因此这里是我编写的PL / SQL函数:

create or replace
FUNCTION helloworld RETURN VARCHAR2 AS
LANGUAGE JAVA NAME 'Hello.world () return java.lang.String';

这是PL / SQL过程:

create or replace
PROCEDURE hellow
AS
  my_string varchar2(400 char);
begin
  my_string:=helloworld();
  dbms_output.put_line('The value of the string is ' || my_string);
end;

使用SQL / developer可以很好地编译函数和过程。

当我尝试运行此过程时:

set serveroutput on;
execute hellow;

出现以下错误:

Error starting at line 2 in command: execute hellow Error report: ORA-29540: class Hello does not exist ORA-06512: at "ORACLE_SOURCE.HELLOWORLD", line 1 ORA-06512: at "ORACLE_SOURCE.HELLOW", line 5 ORA-06512: at line 1
29540. 00000 -  "class %s does not exist"  
*Cause:    Java method execution failed to find a class with the indicated name.
*Action:   Correct the name or add the missing Java class.

我也将.class文件放在bin文件夹中,但是仍然会出现相同的错误。任何人都可以看看这个。


问题答案:

您还可以直接将Java源代码编译并保存在数据库中,例如存储过程:

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "Hello" AS
public class Hello
{
  public static String world()
  {
    return "Hello world";
  }
};
/

> Java created

调用此函数很简单,不需要其他设置:

CREATE OR REPLACE
FUNCTION helloworld RETURN VARCHAR2 AS
LANGUAGE JAVA NAME 'Hello.world () return java.lang.String';
/

DECLARE
   my_string VARCHAR2(400 CHAR);
BEGIN
   my_string := helloworld();
   dbms_output.put_line('The value of the string is ' || my_string);
END;
/

> The value of the string is Hello world

> PL/SQL procedure successfully completed


 类似资料:
  • 问题内容: 我想使用Java从数据库中检索数据并显示它,所以我创建了这个PL / SQL函数,该函数返回一个游标: 在我的Java代码中,我按以下方式调用该函数: 该代码产生以下异常: 为什么? 问题答案: 错误的可能原因是:(在代码段-函数中) 1.包“类型”不存在。 2无效的SQL select语句(创建函数后已删除或更改表或列)。 您需要编写一个with sql语句,并在提示符下使用代码运行

  • 问题内容: 所以我有一个功能可以检查预订表中有多少取消: 要在SQL中执行他,我使用: 我的结果是: 我的问题是有人可以帮助我在JAVA中调用该函数吗,我尝试过但没有运气。 问题答案: Java提供了这样的目的。 将打印与在pl / sql中相同的内容。根据文档, 创建一个CallableStatement对象以调用数据库存储过程。CallableStatement对象提供了用于设置其IN和OUT

  • Oracle PL/SQL 调试器能指导你一步一步调试函数、过程、包和查询的代码。若要启动调试器,请点击对象设计器内的 “调试” 按钮。 你可以使用工具栏或菜单运行最常用的调试动作: 按钮 描述 运行 开始在调试模式下运行代码。如有需要,输入参数。调试器会运行你的代码直到代码结束或到达下一个断点。键盘快捷键:F9 逐过程 恢复运行。当前的行将被运行。如果该行是一个过程或函数调用,它会绕过过程或函数

  • Oracle PL/SQL 调试器能指导你一步一步调试函数、过程、包和查询的代码。若要启动调试器,请点击对象设计器内的 按钮。 你可以使用工具栏或菜单运行最常用的调试动作: 按钮 描述 开始在调试模式下运行代码。如有需要,输入参数。调试器会运行你的代码直到代码结束或到达下一个断点。键盘快捷键:F9 停止逐步运行代码。运行将停止,并且无法恢复。 恢复运行。当前的行将被运行。如果该行是一个过程或函数调

  • Oracle PL/SQL 调试器能指导你一步一步调试函数、过程、包和查询的代码。若要启动调试器,请点击对象设计器内的 “调试” 按钮。 你可以使用工具栏或菜单运行最常用的调试动作: 按钮 描述 运行 开始在调试模式下运行代码。如有需要,输入参数。调试器会运行你的代码直到代码结束或到达下一个断点。键盘快捷键:F9 逐过程 恢复运行。当前的行将被运行。如果该行是一个过程或函数调用,它会绕过过程或函数

  • 我有一个函数,它在PL/SQL中返回一个布尔值。我曾尝试直接获取那个布尔值,但没有成功,所以现在我试图将其转换为字符串(我不想修改数据库): 此代码在数据库中正常工作: