【问题标题】:DB2 SQL Exception code 440 using jdbc使用 jdbc 的 DB2 SQL 异常代码 440
【发布时间】:2014-10-24 18:40:58
【问题描述】:

我试图从我的 java 代码中调用一个存储过程,但我得到了一个 sql 异常。 这是我的代码 sn-p

 CallableStatement cstmt = conn.prepareCall("{call stroredprocname(?,?,?)}");
                cstmt.setString(1, filePattern);
                cstmt.setString(2, fromDate);
                cstmt.setString(3, toDate);

                ResultSet resultSet = cstmt.executeQuery();

这是我得到的错误代码:

com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -440, SQLSTATE: 42884, SQLERRMC: stroredprocname;PROCEDURE
    at com.ibm.db2.jcc.c.tf.e(tf.java:1680)
    at com.ibm.db2.jcc.c.tf.a(tf.java:1239)
    at com.ibm.db2.jcc.b.jb.h(jb.java:139)
    at com.ibm.db2.jcc.b.jb.d(jb.java:71)
    at com.ibm.db2.jcc.b.w.d(w.java:54)
    at com.ibm.db2.jcc.b.cc.i(cc.java:208)
    at com.ibm.db2.jcc.c.tf.o(tf.java:1236)
    at com.ibm.db2.jcc.c.uf.ib(uf.java:1831)
    at com.ibm.db2.jcc.c.uf.d(uf.java:2296)
    at com.ibm.db2.jcc.c.vf.Z(vf.java:159)
    at com.ibm.db2.jcc.c.vf.execute(vf.java:142)
    at MyClass(MyClass.java:102)

有人能帮帮我吗!提前致谢!

【问题讨论】:

  • 您是否在 db 本身中测试(编译)了您的 pl/sql?
  • 上面的错误意味着它找不到存储过程。如果它编译正确,那么我相信你必须提供模式名称和过程名称,例如:调用 schemaname.stroredprocname(?,?,? )
  • 是的,我在数据库中编译了这个。我也尝试给出模式名称,它现在给了我这样的错误 com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -313, SQLSTATE: 07001, SQLERRMC: null at com.ibm.db2 .jcc.c.tf.d(tf.java:1396) 在 com.ibm.db2.jcc.b.jb.l(jb.java:367) 在 com.ibm.db2.jcc.b.jb.e (jb.java:92) 在 com.ibm.db2.jcc.b.w.e(w.java:72) 在 com.ibm.db2.jcc.b.cc.h(cc.java:203) 在 com.ibm。 db2.jcc.c.tf.q(tf.java:1363) 在 com.ibm.db2.jcc.c.uf.d(uf.java:2388) 在 com.ibm.db2.jcc.c.vf。 X(vf.java:188) at com.ibm.db2.jcc.c.vf.executeQuery(vf.java:171)
  • 很好,请在调用 store proc 时找到架构名称并添加到代码中,正如我在回答中提到的那样。它会像魅力一样工作。
  • 您的查询是什么样的?你能检查一下参数吗?参数最有可能不匹配?

标签: java jdbc db2


【解决方案1】:

错误定义 440 - 找不到存储过程位置,这意味着您错过了在您的情况下是架构名称的内容。

例如,请在过程名称之前添加架构名称:

CallableStatement cstmt = conn.prepareCall("{call schemaname.stroredprocname(?,?,?)}");

第 2 期错误 313 - PL/SQL 查询和 Java 代码之间的参数不匹配。

【讨论】:

  • 嗨 Lokesh。非常感谢您这么及时地回答我的问题!我可以知道您是否有错误代码的参考以及它们的含义吗?我通过更正参数解决了错误 313 现在我得到了这个 com.ibm.db2.jcc.c.SqlException: DB2 SQL 错误:SQLCODE: -302, SQLSTATE: 22001, SQLERRMC: null
  • 好吧,你可以在最后看到它说 null,其次,你也可以谷歌一些错误代码,会给你一些线索。如果它解决了你的问题,请点赞并标记答案.我也是一名新开发人员,不断学习和分享我在堆栈溢出方面的知识。
  • 这个新错误是由于插入到数据库表列中的数据大于分配的列长度而引起的。参考链接www-01.ibm.com/support/docview.wss?uid=swg21585238。为了解决这个问题,请转到数据库并增加列的长度。
  • 我认为您正在尝试将某些内容插入数据库?
猜你喜欢
  • 2011-06-12
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多