我知道有相关的问题,但是我在网络上遇到的大多数解决方案都具有相同的解决方案,请在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/