2

我知道有相关的问题,但是我在网上遇到的大多数解决方案都有相同的解决方案,将分号前身从您的 where 子句中的语句中删除。但是,这对我不起作用,因为我没有分号。

我正在使用 MyBatis 并运行 NUnit 测试。

我的Batis代码

<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 已关闭,那么我为简单的修复表示歉意。

我不断收到“ORA01036 非法变量...”消息

这是我的第一个问题,所以我不知道他们得到回答的速度有多快,但希望相当快:-)

提前致谢!

4

2 回答 2

1

野餐问题。

CDATA 标签未关闭的原因是我从我的代码中复制/粘贴。我没有做的是发布整个消息。我有一些代码被注释掉了。我不认为添加评论是一个禁忌,但在再次查看后,我意识到 CDATA 标签是一个文字.

从标签中取出评论(这样他们就不会被如此字面地阅读)解决了这个问题。我现在有一个结果映射问题,但至少我克服了这个非法变量的废话。

感谢您的帮助和维基文章!

于 2012-12-04T16:11:42.490 回答
0

我看到的唯一问题是您需要关闭包含查询的CDATA 部分。为此,请更改以下内容:

      AND             HCL_ID = #HailCoverageId#
</select>

对此:

      AND             HCL_ID = #HailCoverageId#
  ]]>
</select>
于 2012-12-03T22:51:33.250 回答