将存储过程消息直接打印到 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;
我有一个正在使用的存储过程
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;