SQLState 02000未找到FETCH,UPDATE或DELETE的行

时间:2015-12-07 16:07:26

标签: db2 datastage

我正在使用DELETE然后INSERT连接器通过Datastage运行作业。我有几个工作失败了这个错误:

DB2_Connector:  DB2 reported:  SQLSTATE = 02000 Native Error Code = 100, Msg = IBM[CLIDriver][DB2/NT64] SQL01000W No row was found for FETCH, UPDATE, or DELETE

当我直接在DB2中运行Data Studio中的delete语句时,它会给出同样的错误,所以我知道它是DB2错误,而不是Datastage错误。

无论如何要在Datastage中抑制消息,或者当我在DB2中运行语句时,无论如何我都可以阻止该消息出现?它现在正在停止我的DS作业,发生致命错误并且没有继续加载。

必须有办法关闭消息。我知道在SQL Server中如果没有找到行,它不会给出这个错误,它只是说零或不返回记录但是在DB2中这个错误即将出现,我不确定是否有办法将其关闭

1 个答案:

答案 0 :(得分:2)

首先,您似乎对 错误 的确切内容感到困惑,以及 消息 是。

  • 出现问题时出错。

  • 当一些软件足以告诉您出现问题时,会发出一条消息。

由此可见,抑制消息对实际错误没有任何影响。您的软件没有因为消息而失败,您的软件因为出错而导致失败。接收有关它的消息实际上是一件好事:另一种选择是你的软件失败,而不会给你任何关于出错的线索。

抑制或以其他方式忽略错误就像把头藏在沙子里一样:你仍然会最终吃饭。

所以,你需要消除的是错误,而不是消息。

这意味着你必须弄清楚你做错了什么。

幸运的是,你有信息告诉你你做错了什么,但你必须记住,信息有时会产生误导。

SQLState 02000不是错误,而是警告。 (请注意,DB2_Connector并没有说ERROR!!!1!:,而是说DB2 reported:。幸运的是,当JDBC检测到可能表示错误的情况时会发出警告;有很多软件忽略了JDBC警告,(基本上是为你隐藏你的头脑,多么好),但幸运的是DB2_Connector会报告它们。

这意味着两件事之一出错:

  • 要么假设没有找到任何行就没问题,并且没有找到行是导致问题的原因,这意味着您必须以某种方式确保找到某些行,或

  • 您认为没有找到行是正确的,在这种情况下报告的警告与手头的问题完全无关,所以可以安全地忽略它,你必须看看其他地方的问题。