Oracle SQL中的SQL查询字符串长度是否会导致异常?

时间:2016-04-26 21:52:55

标签: sql oracle exception plsql

对于在日志中出现以下异常错误的应用程序,我有一个长 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查询。在作为参数传递时,通过应用程序执行时只会出错。

1 个答案:

答案 0 :(得分:1)

根据Ask Tom

  

例如,在plsql中,execute immediate限制为32k,因为PLSQL本身是有限的   在varchar变量中为32k。但是,您可以使用dbms_sql来解析可以的ARRAY   是巨大的 - 兆字节。