我使用的是的ibatis 2.3.4,oracle9.2:
当我运行如下sqlmap配置的sql时,就出现了一个很奇怪的现象:
<select id="getSingleForms" parameterClass="transfer2Form" resultMap="transfer2FormHeaderResult">
<![CDATA[
SELECT MTH.HEADER_ID,
MTH.REQUEST_NUMBER,
SINO_FAQ_PKG.GET_ETS_FLEX_VALUE(MTH.HEADER_STATUS,'SUB_TRANS_STATUS') STATUS_NAME,
MTH.CREATED_BY,
IUV.USER_NAME CREATED_USER,
TO_CHAR(MTH.CREATION_DATE, 'YYYY-MM-DD') CREATION_DATE,
MTH.COMMENTS,
MTH.FROM_IO_ID,
MIL.LOCATION_CODE FROM_COMPANY_NAME,
MTH.FROM_SUBINVENTORY_CODE,
MIL.LOCATION_DESC FROM_LOCATOR_DESC,
MTH.FROM_LOCATOR_ID
FROM MTL_TXN_REQUEST_HEADERS MTH,
IES_USER_ALL_V IUV,
MTL_ITEM_LOCATIONS_V MIL
WHERE IUV.USER_ID = MTH.CREATED_BY
AND MTH.FROM_IO_ID = MIL.ORGANIZATION_ID
AND MTH.FROM_SUBINVENTORY_CODE = MIL.SUBINVENTORY_CODE
AND MTH.FROM_LOCATOR_ID = MIL.LOCATION_ID
AND OUT_INV_TYPE = 0
AND (MTH.HEADER_ID = NVL(#headerId#, MTH.HEADER_ID))
]]>
</select>
我传递的#headerId#是768,返回的结果中的HEADER_ID 却是763(763在sqlplus中查询是第一条记录的header_id),但其它列的值却是正常的.#headerId#一定不是空的,我测试了,并且结果也只返回了一条记录!
如果我把上面的sql中AND (MTH.HEADER_ID = NVL(#headerId#, MTH.HEADER_ID))修改一下,改成如下:
AND MTH.HEADER_ID = #headerId#
结果就是正确的,header_id也是768.真是太奇怪了,那位大侠遇到过这种情况?
当我运行如下sqlmap配置的sql时,就出现了一个很奇怪的现象:
<select id="getSingleForms" parameterClass="transfer2Form" resultMap="transfer2FormHeaderResult">
<![CDATA[
SELECT MTH.HEADER_ID,
MTH.REQUEST_NUMBER,
SINO_FAQ_PKG.GET_ETS_FLEX_VALUE(MTH.HEADER_STATUS,'SUB_TRANS_STATUS') STATUS_NAME,
MTH.CREATED_BY,
IUV.USER_NAME CREATED_USER,
TO_CHAR(MTH.CREATION_DATE, 'YYYY-MM-DD') CREATION_DATE,
MTH.COMMENTS,
MTH.FROM_IO_ID,
MIL.LOCATION_CODE FROM_COMPANY_NAME,
MTH.FROM_SUBINVENTORY_CODE,
MIL.LOCATION_DESC FROM_LOCATOR_DESC,
MTH.FROM_LOCATOR_ID
FROM MTL_TXN_REQUEST_HEADERS MTH,
IES_USER_ALL_V IUV,
MTL_ITEM_LOCATIONS_V MIL
WHERE IUV.USER_ID = MTH.CREATED_BY
AND MTH.FROM_IO_ID = MIL.ORGANIZATION_ID
AND MTH.FROM_SUBINVENTORY_CODE = MIL.SUBINVENTORY_CODE
AND MTH.FROM_LOCATOR_ID = MIL.LOCATION_ID
AND OUT_INV_TYPE = 0
AND (MTH.HEADER_ID = NVL(#headerId#, MTH.HEADER_ID))
]]>
</select>
我传递的#headerId#是768,返回的结果中的HEADER_ID 却是763(763在sqlplus中查询是第一条记录的header_id),但其它列的值却是正常的.#headerId#一定不是空的,我测试了,并且结果也只返回了一条记录!
如果我把上面的sql中AND (MTH.HEADER_ID = NVL(#headerId#, MTH.HEADER_ID))修改一下,改成如下:
AND MTH.HEADER_ID = #headerId#
结果就是正确的,header_id也是768.真是太奇怪了,那位大侠遇到过这种情况?
另外你帖子发错了应该在oracle区,这个问题不是框架的问题。