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

时间:2015-04-10 18:35:33

标签: java sql oracle jdbc

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

回到java land:

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

没有其他办法。你有ORACLE,你有IDE控制台。两者之间没有关系。要从数据库中获取数据,你必须使用一个函数来返回一个值,你可能会认为返回值作为out参数是一回事,虽然两者都会得到一个值,但你的代码将更加直观。其他。它说,这个调用会返回一些东西。

也就是说,您可以在SQL开发人员中调用该方法并打印如下:

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