我们正在 Java 代码中调用 PL/SQL 存储过程。有时,包需要很长时间才能返回结果。是否可以从 PL/SQL 调用中出来并用 java 编写日志?
请看下面的Java代码:
long startTime = 0L;
long endTime = 0L;
startTime = System.currentTimeMillis();
logger.info("Starting Time PKGSM2_TOOLS Alerts Package ------->"+startTime);
CallableStatement statement= con.getConnection().prepareCall("{call PKGSM2_CONTROL_CHART.PROC_INDICATORCHART_ECHARANGE(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
statement.executeQuery();
endTime = System.currentTimeMillis();
logger.info("Ending Time PKGSM2_TOOLS Alerts Package ------->"+endTime);
logger.info("Total Package Execution Time Duration of Alerts Package ------->"+(endTime - startTime)+"ms");
在上面的代码中,如果 PL/SQL 包花费更多时间并且请求驻留在包内。如果套餐调用时间超过2分钟,是否可以退出通话?
PL/SQL 存储过程中长时间 Activity session 的原因是什么?
最佳答案
您可以使用 Utl 文件
Use UTL_FILE.PUT_LINE , how to do file append in pl/sql
CREATE OR REPLACE PROCEDURE SHAREFLE IS
v_MyFileHandle UTL_FILE.FILE_TYPE;
BEGIN
v_MyFileHandle := UTL_FILE.FOPEN('C:\','HELLO.TXT','a');
UTL_FILE.PUT_LINE(v_MyFileHandle, 'Hello Again for the Second Time! ' || TO_CHAR(SYSDATE,'MM-DD-YY HH:MI:SS AM'));
UTL_FILE.FCLOSE(v_MyFileHandle);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE
('ERROR ' || TO_CHAR(SQLCODE) || SQLERRM);
NULL;
END;
关于java - PL/SQL 过程中的长 Activity session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37560909/