Java 存储过程 日期:2003 5 月 22 日 在 Java 存储过程中的服务器端跟踪 简介 存储过程是发布到 SQL 并存储在 Oracle 数据库中用于一般用途的 Java 方法。当从一个客户程序调用存储过程时,存储过程可以接受参数、引用 Java 类,以及返回 Java 结果值。Java 类在执行过程中产生的任何输出都不会在用户屏幕上显示。这是因为数据库服务器的默认输出设备不是用户屏幕而是跟踪文件,因此 System.out 和 System.err 会打印到当前的跟踪文件中。这个方法文档举例说明了在一个 PL/SQL 块中执行 Java 存储过程时,到哪里寻找跟踪文件以及如何把输出重定向到用户屏幕。 运行示例的前提条件 您需要以下条件才能运行此示例 -
日期:2003 5 月 22 日
存储过程是发布到 SQL 并存储在 Oracle 数据库中用于一般用途的 Java 方法。当从一个客户程序调用存储过程时,存储过程可以接受参数、引用 Java 类,以及返回 Java 结果值。Java 类在执行过程中产生的任何输出都不会在用户屏幕上显示。这是因为数据库服务器的默认输出设备不是用户屏幕而是跟踪文件,因此 System.out 和 System.err 会打印到当前的跟踪文件中。这个方法文档举例说明了在一个 PL/SQL 块中执行 Java 存储过程时,到哪里寻找跟踪文件以及如何把输出重定向到用户屏幕。
您需要以下条件才能运行此示例 -
在大部分 java 程序中我们经常使用 print 语句来用于调试。这些语句把消息打印输出到控制台等标准的输出设备。在服务器中,默认的输出设备不是用户屏幕而是一个跟踪文件。因此,Java 存储过程中使用的所有 System.out 和 System.err 语句会把消息打印输出到当前的跟踪文件。
rset = stmt.executeQuery("SELECT ENAME FROM EMP"); System.out.println("Employee names in the EMP table ..."); while ( rset.next() ) { System.out.println(rset.getString("ENAME")); }
您可以在最近的跟踪文件 <TRACEFILE_NAME>.trc 中找到输出语句,该文件位于 <ORACLE_HOME>/admin//udump 其中, <ORA_HOME> :安装 oracle 数据库的文件夹 :连接到数据库时使用的 SID <TRACEFILE_NAME>:数据库最后用来记录的跟踪文件
现在,如果您想把输出重定向到 SQL*Plus 文本缓冲区,可以调用 DBMS_JAVA 包中的 set_output() 过程,如下所示:
SQL> SET SERVEROUTPUT ON SQL> CALL dbms_java.set_output(2000);
最小的(也是默认的)缓冲区大小是 2,000 字节;最大的缓冲区大小是 1 百万字节。当存储过程退出时会打印输出。
您可以在线观看此示例的完整源代码。这一节讨论运行示例程序的相关指导
getEmployee()
CLASSPATH
PATH
从 SQL Plus 调用存储过程 BEGIN getEmployees; END; 在控制台或跟踪文件中检查输出。它可能如下所示:
Employee names in the EMP table ...
ALLEN
WARD
RAM
MARTIN