将存储过程消息直接打印到 Java 控制台

Print stored procedure message directly to Java console

我有一个正在使用的存储过程

dbms_output.put_line(' output' || outVar);

我想直接在 Java 控制台(直接从存储过程)中打印相同的输出,而不使用下面的代码来获取 outVar :

callableStatement.registerOutParameter(1, String);
system.out.println(callableStatement.getString());

将您的程序更改为以下函数:

FUNCTION SOME_FUNCTION
RETURN VARCHAR2
IS
BEGIN
 -- Do some processing here....
 RETURN 'output:' || ....;
END;

回到java地:

CallableStatement cs = connection.prepareCall("{? = call SOME_FUNCTION}");
cs.registerOutParameter(1, String);
cs.executeUpdate();
system.out.println(cs.getString(1));

没有别的办法。你有 ORACLE,你有 IDE 控制台。两者之间没有任何关系。要从数据库中取回数据,您必须使用一个函数来 return 一个值,您可以争辩说 returning 值作为输出参数是一回事,虽然两者都会取回一个值,你的代码对其他人来说会更直观。它说,这个调用 returns something.

也就是说,你可以调用SQL开发者中的方法打印如下:

DECLARE
    result varchar2;
BEGIN
    result := SOME_FUNCTION;
    DBMS_OUTPUT.PUTLINE(result);
END;