【问题标题】:ibatis select within insert statementibatis 在插入语句中选择
【发布时间】:2013-02-04 13:40:26
【问题描述】:

我有一个选择查询,它将参数设置为插入查询。

使用的数据库:DB2

insert into table_name
(col1,col2,col3,col4)
(select col1,col2,col3,col4 from table_name_2)

如果 select 返回的 cols 之一为 null,则上述语句在 ibatis 中失败。 我使用 websphere 并启用了跟踪日志,我使用 qtoad 在跟踪日志中运行查询,它运行良好。

我哪里错了?

请帮忙。

实际查询:

INSERT INTO DB2TUNT.WKSET_VEND_ITEM (WKSET_I,WKSET_ITEM_I,VEND_I,GMS_VEND_I,VOP_TYPE_C,MFR_STYL_T)      
(SELECT 7725263,VITEM.DIR_ITEM_I,DIR.PRIM_VEND_I,VITEM.GMS_VEND_I,VITEM.VOP_TYPE_C,VITEM.MFR_STYL_T)

错误: 应用参数映射时发生错误。 检查语句(更新失败)。

看起来这种情况只发生在 db2 上。有谁能提供帮助吗?

【问题讨论】:

  • 我不了解失败的上下文:如果它在 WebSphere 中部署的应用程序中运行良好,您何时收到失败?在单元测试阶段?在另一个 Websphere 中?表的 DDL 是什么?可以发一下IBatis的XML吗?
  • 尝试显式设置 JDBC 类型:例如select #col1:VARCHAR#...。这是 ibatis 的语法,如果您使用的是 MyBatis 3.x,则略有不同。
  • @partlov 能在 db2 中工作吗?
  • @alepuzio 我通过 ibatis 模板运行它时收到此错误。该应用程序未部署,v r 仍在开发中
  • 对不起,我弄错了。我认为这些是参数。您看到什么错误?

标签: spring spring-mvc db2 dao ibatis


【解决方案1】:

在您的插入中缺少 values 关键字。

INSERT INTO table_name VALUES (...)

【讨论】:

  • 即使我添加了“值”也不起作用,问题是只有当其中一列返回 null 时,如果它返回一个值,它工作正常。我使用普通 JDBC 尝试了相同的语句,它工作正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
  • 2014-10-21
相关资源
最近更新 更多