相关疑难解决方法(0)

Dapper和Oracle Clob类型

我正在使用dapper来进行一些oracle访问.我有一个场景,我必须有一个类型为OracleDbType.Clob的输出参数.当我使用dapper并因此使用基本DbType枚举时,我正在使用此处建议的DbType.Object枚举http://docs.oracle.com/html/B14164_01/featOraCommand.htm代表OracleDbType.Clob.

但是,这会将命令参数(深入到dapper中)设置为DbType对象和oracle类型Blob(因为DbConnection提供者是具体的OracleParameter).如果此参数的类型为Clob而不是Blob,则此Oracle proc仅会起作用.

纯ADO代码就像一个魅力(使用OracleParameter和OracleConnection等),但似乎没有办法在dapper中设置具体类型或钩子进入这个DbParameter创建过程,以便在返回的CommandParameter上更改此OracleType?

这有效:

using (OracleConnection conn = new OracleConnection("some connection string"))
{
      conn.Open();
      var cmd = new OracleCommand("ProcName", conn);
      cmd.CommandType = CommandType.StoredProcedure;
      var paramOne = new OracleParameter("ReturnValue", OracleDbType.Clob, int.MaxValue, null, ParameterDirection.Output);
      cmd.Parameters.Add(paramOne);
      cmd.ExecuteNonQuery();
      var value1 = paramOne.Value;
 }
Run Code Online (Sandbox Code Playgroud)

这失败了:

DynamicParameters dyanmicParameters = new DynamicParameters();
dyanmicParameters.Add("ReturnValue", null, DbType.Object, ParameterDirection.Output);
connection.Execute("ProcName", dyanmicParameters, commandType: CommandType.StoredProcedure);
var val = dynamicParameters.Get<object>("ReturnValue");
Run Code Online (Sandbox Code Playgroud)

有任何想法吗??

谢谢,

乔恩

oracle ado.net dapper

7
推荐指数
2
解决办法
3796
查看次数

标签 统计

ado.net ×1

dapper ×1

oracle ×1