如何从 oracle 的 java 代码输出到 oracle 控制台?

Posted

技术标签:

【中文标题】如何从 oracle 的 java 代码输出到 oracle 控制台?【英文标题】:How to get output into oracle console from java code of oracle? 【发布时间】:2018-02-22 14:15:14 【问题描述】:

请检查 Oracle 的 Java 代码。我喜欢将 println() 输出到 Oracle 控制台,例如 DBMS_OUTPUT.PUT_LINE()。

我还创建了一个函数/过程(在 java 中没有返回)来调用 java 函数。它执行得很好并返回值(对于函数),但不要在 Oracle 控制台(ServerOutput)中打印任何内容。

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "Azam/Azam_Test" as package Azam;

import java.lang.*;
public class Azam_Test 

    public static String Azam_Test_Print(String testString) 
      System.out.println(testString); // want this output into ORACLE console
      return testString;
    

【问题讨论】:

【参考方案1】:

这是一个完整的脚本。

SQL> SET SERVEROUTPUT ON
SQL> CALL dbms_java.set_output(2000);

Call completed.

SQL> 
SQL> CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "MyOutput" as
  2  
  3  import java.lang.*;
  4  public class MyOutput 
  5  
  6      public static String print(String testString) 
  7        System.out.println(testString); // want this output into ORACLE console
  8        return testString;
  9      
 10  
 11  /

Java Source MyOutput created

SQL> 
SQL> create or replace procedure Test_Output(testString in varchar2)
  2  as LANGUAGE JAVA
  3  NAME 'MyOutput.print(java.lang.String)';
  4  /

Procedure TEST_OUTPUT compiled

SQL> 
SQL> exec Test_Output('Hello');
Hello


PL/SQL procedure successfully completed.

SQL> 

【讨论】:

【参考方案2】:

文档DBMS_JAVA 和程序 DBMS_JAVA.SET_OUTPUT(2000000)

也可以查看DBMS_JAVA.SET_OUTPUT_TO_SQL,比较有用

【讨论】:

以上是关于如何从 oracle 的 java 代码输出到 oracle 控制台?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Java 中的 Oracle SQL 选择中获取原始脚本输出而不是查询结果

c#中的oracle输出参数问题

I/O流

深入理解JAVA I/O系列二:字节流详解

如何将列表从 java 传递到 Oracle 过程?

从入门到精通!java源代码加密