【问题标题】:Can the SQL query string length in Oracle SQL cause Exception?Oracle SQL中的SQL查询字符串长度会导致异常吗?
【发布时间】:2016-04-26 21:52:55
【问题描述】:

我有一个长度为 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 查询。只有在作为参数传递时通过应用程序执行时才会出错。

【问题讨论】:

    标签: sql oracle exception plsql


    【解决方案1】:

    根据Ask Tom

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

    【讨论】:

    • 这个sql查询的字符数是3261个字符。它似乎没有超过32k的限制。我错过了什么吗?
    • @Pha3drus 根据文档,您是对的。遗憾的是,我不知道是什么导致了您得到的错误,但这可能不是查询的长度。
    猜你喜欢
    • 2014-10-04
    • 2021-04-14
    • 2013-11-22
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多