java - PL/SQL 过程中的长 Activity session

标签 java oracle

我们正在 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/

相关文章:

java - 单一异常

Java 到 ASN1 可读字符串

java - 使用大整数时间复杂度的递归斐波那契

java - 如何在Java中实现这个通用方法?

java - 通过JDBC PreparedStatement执行选择时出现“日期格式图片结束..”错误

c# - ora-00972 标识符太长 oracle 10g

java - 无法在 Thymeleaf 中打开索引页面,在 Intellij IDEA 中收到 404

java - JAVA 中 Tuxedo 调用的自定义适配器

oracle - 如何在sqlplus中调用嵌套脚本

java - Oracle SQL Developer,DATE是如何存储的?