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

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

MyBatis代码

<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,因此,如果“选择”,“从”,“位置”处于关闭状态,那么我会为简单的修复程序道歉。

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

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

提前致谢!

最佳答案

PICNIC问题。

没有关闭CDATA标记的原因是因为我正在从代码中复制/粘贴。我没有做的是发布整个消息。我已经注释掉了一些代码。我不认为添加注释是不可以的,但是再次查看之后,我意识到CDATA标记是文字。

从标签中删除注释(这样就不会从字面上读取它们了)解决了这个问题。我现在有一个结果映射问题,但至少我已经摆脱了这个非法变量的废话。

感谢您的帮助和Wiki文章!

关于c# - ora-01036非法变量名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13692581/

10-13 04:40