我有一个存储过程,
dbms_output.put_line(' output' || outVar);
我想直接在Java控制台中打印相同的输出(直接从存储的proc),而不使用下面的代码来获取outVar:
outVar
callableStatement.registerOutParameter(1, String); system.out.println(callableStatement.getString());
xqkwcwgp1#
将您的过程更改为以下函数:
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控制台。两者之间没有任何关系。为了从数据库中获取数据,你必须使用一个函数来返回一个值,你可以争辩说,返回值作为输出参数是一样的,虽然两者都会得到一个值,但你的代码对其他人来说会更直观。它说,这个调用返回一些东西。也就是说,您可以在SQL developer中调用该方法并打印如下:
DECLARE result varchar2; BEGIN result := SOME_FUNCTION; DBMS_OUTPUT.PUTLINE(result); END;
jaql4c8m2#
如果你是为了调试而这样做,你可以只使用一个表来存储你想要的值:
... BEGIN UPDATE MY_TABLE SET MY_COLUMN = 'hello' WHERE ID = 123456; COMMIT; -- Rest of stored procedure code END;
然后在运行存储过程后检查该表中的值。
2条答案
按热度按时间xqkwcwgp1#
将您的过程更改为以下函数:
回到Java土地:
没有别的办法了。你有Oracle,你有IDE控制台。两者之间没有任何关系。为了从数据库中获取数据,你必须使用一个函数来返回一个值,你可以争辩说,返回值作为输出参数是一样的,虽然两者都会得到一个值,但你的代码对其他人来说会更直观。它说,这个调用返回一些东西。
也就是说,您可以在SQL developer中调用该方法并打印如下:
jaql4c8m2#
如果你是为了调试而这样做,你可以只使用一个表来存储你想要的值:
然后在运行存储过程后检查该表中的值。