对于在日志中出现以下异常错误的应用程序,我有一个长 3261 字符的SQL查询
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908
║ ) at java.lang.Thread.run(Thread.java:662) Caused by:
║ com.myapp.DiagException: Execution of the
║ SQL query failed. SQL query was: 'null' at
║ com.myapp.plsql.PLSQLReportProcessor
║ .displaySQLResults(PLSQLReportProcessor.java:622)
║ com.myapp.engine.DiagRunnable.run(DiagRunnable.java:68)
║ at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
║ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
║ java.util.concurrent.FutureTask.run(FutureTask.java:139) ... 2 more Caused
║ by: java.sql.SQLException: Null SQL statement passed to prepareStatement at
║ weblogic.jdbc.wrapper.Connection.prepareStatement(Connection.java:548) at
║ com.myapp.engine.impl.report.plsql.PLSQLReportProcessor
║ .displaySQLResults(PLSQLReportProcessor.java:583) ... 17 more
║ Fix Information: An unexpected error was encountered. Please contact your
║ system administrator.
可能导致此错误的sql查询的长度是否有任何限制,或者可能是由于其中一列为空的错误数据导致的?
我也可以从SQL开发人员运行这个长sql查询。在作为参数传递时,通过应用程序执行时只会出错。
答案 0 :(得分:1)
根据Ask Tom:
例如,在plsql中,execute immediate限制为32k,因为PLSQL本身是有限的 在varchar变量中为32k。但是,您可以使用dbms_sql来解析可以的ARRAY 是巨大的 - 兆字节。