【问题标题】:java.sql.SQLException: [SQL0104] Token <END-OF-STATEMENT> was not valid. Valid tokens: ) ORjava.sql.SQLException:[SQL0104] 令牌 <END-OF-STATEMENT> 无效。有效令牌:) 或
【发布时间】:2020-02-06 12:14:00
【问题描述】:

我在 db2 数据库中运行以下查询时遇到 SQL 异常。

UPDATE TRINITI.T_PARENT_LOTS_API
  SET     ACTION_CODE           = TXN_CODE19_18_FROP4000_TO4000.TXN_CODE19_18_FROP4000_TO4000_TMDV_TXN_CMD,
          NEW_FACTORY_NAME      = TXN_CODE19_18_FROP4000_TO4000.TXN_CODE19_18_FROP4000_TO4000_TMDV_SHIP_TO_CD,
          OLD_OPERATION         = '' '',
          NEW_OPERATION         = '' '',
          NEW_TXN_QTY           = TXN_CODE19_18_FROP4000_TO4000.TXN_CODE19_18_FROP4000_TO4000_TMDV_TXN_QTY2,
          TRANSFER_FACTORY_NAME = TXN_CODE19_18_FROP4000_TO4000.TXN_CODE19_18_FROP4000_TO4000_TMDV_TRANSFER_FACTORY_NAME,
          SUBINV_CODE           = TXN_CODE19_18_FROP4000_TO4000.TXN_CODE19_18_FROP4000_TO4000_TMDV_SUBINV_CODE,
          TRANSFER_SUBINV_CODE  = TXN_CODE19_18_FROP4000_TO4000.TXN_CODE19_18_FROP4000_TO4000_TMDV_TRANSFER_SUBINV_CODE,
          NEW_BOM_LEVEL         = '' DBK '',
          NEW_UOM_CODE          = TXN_CODE19_18_FROP4000_TO4000.UOM
Where      TRINITI.T_PARENT_LOTS_API.ACTION_CODE Is null
  And     ((TRINITI.T_PARENT_LOTS_API.OLD_STATE_ID = '18' And     
            TRINITI.T_PARENT_LOTS_API.NEW_OPERATION = '4000' And     
            TRINITI.T_PARENT_LOTS_API.OLD_OPERATION = '4000' And     
            TRINITI.T_PARENT_LOTS_API.COMMENTS = 'SHIP')
   Or      (TRINITI.T_PARENT_LOTS_API.OLD_STATE_ID = '19'
            And      TRINITI.T_PARENT_LOTS_API.NEW_OPERATION = '4000'
            And      TRINITI.T_PARENT_LOTS_API.COMMENTS = 'RECV')
            )
  And      TRINITI.T_PARENT_LOTS_API.TRANSACTION_ID = TXN_CODE19_18_FROP4000_TO4000.CONTROL_NO

没有得到查询出错的地方。

【问题讨论】:

  • 什么 Db2 版本和平台?
  • 为什么有些引号加倍 ('' DBK '') 而有些则不加倍(where 子句中的任何),您的查询使用了一个 TXN_CODE19_18_FROP4000_TO4000 对象,该对象不在任何 from 子句中跨度>
  • 除了上面的错误。语句中不允许使用 '' '' 序列。这是什么?如果是单个空格,那么一定是' '...

标签: sql exception db2


【解决方案1】:

SQL0104N 是语法错误。它说它在某个地方期待另一个“)”。看看你的陈述,数一数你有多少个“(”你打开了,有多少个关闭了“)”。这似乎是正确的。现在,因为 Db2 抱怨语句结束,您需要检查该语句是否真的像上面给出的那样传递给 Db2。

是否有指示“语句结束”的附加字符或格式?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多