我知道有相关的问题,但我在网上遇到的大部分解决方案都有相同的解决方案,将分号的前任从where子句中删除。但是,这对我不起作用,因为我没有分号。
我正在使用MyBatis并运行NUnit测试。
MyBatisCode
<select id="GetLineNumber" parameterClass="HashTable" resultClass="long">
<![CDATA[
SELECT
HP.LINE_NUM
FROM
ODS.HAIL_PLCY_LINE_NUM
WHERE
PLCY_ID = #PolicyId#
AND HCL_ID = #HailCoverageId#
</select>
C#代码: ...
Hashtable lineNumberHash = new Hashtable
{
{"PolicyId",x.PolicyId}
,{"HailCoverageId",x.Id}
};
lastDatabaseCoverage.AddRange(IbatisSqlMapper.QueryForList<T>("GetLineNumber", lineNumberHash));
上面代码中的“X”是一个对象,属性PolicyId和Id是有效的,所以请忽略一下无上下文信息!
请注意,我习惯使用SQL Server,所以如果Select,From,Where is off,那么我为简单修复而道歉。
我一直收到“ORA01036非法变量......”消息
这是我的第一个问题,所以我不知道他们得到多快的答案,但希望相当快: - )
提前致谢!
答案 0 :(得分:1)
PICNIC问题。
CDATA标记未关闭的原因是因为我是从我的代码中复制/粘贴的。我没有做的是发布整个消息。我把一些代码注释掉了。我不认为添加评论是禁止的,但在再次查看之后我意识到CDATA标签是文字。
从标签中取出注释(因此它们没有被字面意义地阅读)解决了问题。我现在有一个结果映射问题,但至少我已经超过了这个非法的变量废话。
感谢您的帮助和维基文章!
答案 1 :(得分:0)
我看到的唯一问题是您需要关闭查询包装的CDATA section。为此,请更改此信息:
AND HCL_ID = #HailCoverageId#
</select>
到此:
AND HCL_ID = #HailCoverageId#
]]>
</select>