2013-08-20 86 views
0

我有一个DB2查询DB2查询被忽略

SELECT SECTIONTITLE, VMETE.COALESCE_XML(XMLQUERY('$c/Details/UserResource[[email protected]_0]' passing i.SECTIONCONTENT as "c"), i.SECTIONCONTENT) as SECTIONCONTENT 
FROM VMETE.IPSP_CONFIGURATION i 
WHERE ("IPSPID" = @IPSP_ID_0) AND ("EFFECTIVETO" = @EFFECTIVE_TO_0) ORDER BY SORTORDER 

其中有3个参数 @ VmeMerchantId_0 @ IPSP_ID_0 @ EFFECTIVE_TO_0

,并在我的命令对象, 有只有三岁参数

[0] = {@VmeMerchantId_0} 
[1] = {@IPSP_ID_0} 
[2] = {@EFFECTIVE_TO_0} 

为什么只有[1] [2]被传递到查询中,而[0] i被忽略?

COALESCE_XML是我写的一个功能,你可以认为它是COALESCE

+0

在查询中被忽略的抱怨太少参数? –

+0

db2不会抱怨什么,结果集不是它应该是。是否有可能在db2接受参数后看到原始查询。 – Larry

回答

0

我想这可能工作:

XMLQUERY('$c/Details/UserResource[ResourceGroup=$var]' 
    passing i.SECTIONCONTENT as "c", @VmeMerchantId_0 as "var") 
+0

我非常厌烦这个fking db2语句。 – Larry

+0

错误[42610] [IBM] [DB2/SUN64] SQL0418N语句包含使用无类型化的参数标记或无效的空值。 SQLSTATE = 42610 – Larry

+0

我几乎可以肯定的是,db2语句对你来说不会感到厌倦...... :) @ VmeMerchantId_0的数据类型是什么? ResourceGroup元素的类型是什么?您可能需要[明确CAST()](http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0023459.html )@VmeMerchantId_0如果它们是不同的,则为正确的类型,并且如果它应该是一个字符串,则可以在双引号中包含'$ var'。 – mustaccio