2013-02-04 104 views
0

我有一个选择查询,它将参数设置为插入查询。在插入语句中选择ibatis

DB使用:DB2

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

上述声明ibatis的失败,如果选择返回的cols的一个为空。 我使用websphere和hav enalbled跟踪日志,我使用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.is中任何人都可以帮忙吗?

+0

我不明白失败的上下文:如果它在WebSphere中的部署应用程序中正常工作,您何时收到失败?在单元测试阶段?在另一个Websphere?桌子的DDL是什么?你能发布IBatis的XML吗? – alepuzio

+0

尝试显式设置JDBC类型:例如,“select#col1:VARCHAR#...'。这是ibatis的语法,如果您使用的是MyBatis 3.x,则它有点不同。 – partlov

+0

@partlov将在db2中工作吗? – RVP

回答

0

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

INSERT INTO table_name VALUES (...) 
+0

即使我添加'值',工作不正常,问题是只有当其中一个列返回null,如果它返回一个值,它工作正常。我尝试使用普通JDBC相同的语句,它工作正常 – RVP