我有一个存储过程,其中我正在使用
dbms_output.put_line(' output' || outVar);
我希望能够直接在Java控制台中打印相同的输出(直接从存储过程中打印),而无需使用下面的代码获取outVar:
callableStatement.registerOutParameter(1, String);
system.out.println(callableStatement.getString());
我有一个存储过程,其中我正在使用
dbms_output.put_line(' output' || 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控制台。两者之间没有关系。要从数据库中获取数据,您必须使用函数返回值,您可以争辩说将返回值作为输出参数是同样的事情,虽然两者都会得到一个值,但您的代码对其他人来说更加直观。它表示这个调用返回了某些内容。
话虽如此,您可以在SQL Developer中调用该方法并打印如下:
DECLARE
result varchar2;
BEGIN
result := SOME_FUNCTION;
DBMS_OUTPUT.PUTLINE(result);
END;
...
BEGIN
UPDATE MY_TABLE
SET MY_COLUMN = 'hello'
WHERE ID = 123456;
COMMIT;
-- Rest of stored procedure code
END;
运行存储过程后,请检查该表中的值。