如果我从sql Developer内部执行以下查询并提供占位符的值,则没有问题.但是,如果我通过OracleCommand(Oracle.DataAccess.dll,版本1.102.0.1(我认为),.NET Framework 3.5)执行它,
我收到以下错误消息.请注意,我们不使用默认的oracle客户端,因为我们需要批量插入.不幸的是,给定的ODP版本和.NET Framework版本是一项艰难的要求,我们可能不会改变它.
查询:
UPDATE master_table SET description = :description,modification_notes = :modification_notes WHERE master_id = :master_id;
错误:
ORA-00932: inconsistent datatypes: expected – got CLOB
进一步的信息:
参数分配如下:
var param_description = new OracleParameter(":description",OracleDbType.Clob); param_description.Value = "Test";
我试过以下的事情:
>将to_clob()插入SQL查询
>将Oracle.DataAccess.Types.OracleClob对象分配给参数.
我也发现了以下描述,但我真的希望能够保留准备好的查询.
How to insert CLOB field in Oracle using C#
是否可以通过准备好的查询来完成此操作?
我附上了一个产生错误的完整示例. DESCRIPTION和MODIFICATION_NOTES是数据库中CLOB类型的两列.
输入数据:
>连接:OracleConnection到数据库
> master_id:要过滤的主键
码:
免责声明:我手动输入以下示例,可能存在实际代码中没有的错误
var query = "UPDATE master_table " + "SET description = :description " + " modification_notes = :modification_notes " + "WHERE master_id = :master_id"; var param_master_id = new OracleParameter(":master_id",OracleDbType.Int64); param_master_id.Value = master_id; var param_description = new OracleParameter(":description",OracleDbType.Clob); param_description.Value = "Test1"; var param_master_id = new OracleParameter(":modification_notes",OracleDbType.Clob); param_description.Value = "Test2"; IDbCommand command = new OracleCommand(query,connection); command.parameters.Add(param_master_id); command.parameters.Add(param_description); command.parameters.Add(param_modification_notes); command.ExecuteNonQuery(); // this line throws an exception
解决方法
原文地址:https://www.jb51.cc/csharp/97646.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。