使用C# Dapper操作Oracle插入数据时遇ORA-00933错误求助
解决Dapper操作Oracle时INSERT语句的ORA-00933错误
可能的原因及解决方法
1. 移除语句末尾的分号
Oracle通过.NET驱动执行SQL时,不需要在语句末尾加分号。你当前的INSERT语句最后带了;,这大概率是触发语法错误的原因。修改后的语句:
insert into Car_Names (Model, Descr) values (:Model, :Descr)
2. 排查保留关键字冲突
如果Model或Descr是Oracle保留关键字(虽这两个不属于常见保留字,但可做兜底检查),可以用双引号包裹列名(Oracle用双引号区分特殊名称,注意双引号内的名称要和数据库中列名的大小写完全一致):
insert into Car_Names ("Model", "Descr") values (:Model, :Descr)
3. 确认参数传递正确性
检查C#代码中参数的传递逻辑,确保参数名与SQL中的绑定变量完全匹配,示例代码如下:
var carData = new { Model = "Sedan", Descr = "Family sedan" }; connection.Execute("insert into Car_Names (Model, Descr) values (:Model, :Descr)", carData);
4. 直接在Oracle客户端验证SQL
把去掉分号后的INSERT语句,放到SQL Developer或PL/SQL Developer中直接执行,确认语句本身的语法合法性。如果客户端执行正常,再排查Dapper是否有额外配置干扰了SQL生成逻辑。
内容的提问来源于stack exchange,提问作者Flasher12
相关产品推荐
相关产品推荐

