gpt4 book ai didi

c# - 将 Dapper 与返回游标的 Oracle 存储过程一起使用

转载 作者:可可西里 更新时间:2023-11-01 03:08:15 25 4
gpt4 key购买 nike

如何使用 Dapper使用返回游标的 Oracle 存储过程?

var p = new DynamicParameters();
p.Add("foo", "bar");
p.Add("baz_cursor", dbType: DbType.? , direction: ParameterDirection.Output);

在这里,DbType 是没有 Cursor 成员的 System.Data.DbType。我试过使用 DbType.Object,但这不适用于 OracleClient 和 OracleDataAcess。

改用 OracleType 或 OracleDbType 的可能方法是什么?

最佳答案

感谢这里的解决方案。我使用一个简单的动态参数装饰器用更少的代码实现了同样的事情:

public class OracleDynamicParameters : SqlMapper.IDynamicParameters
{
private readonly DynamicParameters dynamicParameters = new DynamicParameters();

private readonly List<OracleParameter> oracleParameters = new List<OracleParameter>();

public void Add(string name, object value = null, DbType? dbType = null, ParameterDirection? direction = null, int? size = null)
{
dynamicParameters.Add(name, value, dbType, direction, size);
}

public void Add(string name, OracleDbType oracleDbType, ParameterDirection direction)
{
var oracleParameter = new OracleParameter(name, oracleDbType, direction);
oracleParameters.Add(oracleParameter);
}

public void AddParameters(IDbCommand command, SqlMapper.Identity identity)
{
((SqlMapper.IDynamicParameters)dynamicParameters).AddParameters(command, identity);

var oracleCommand = command as OracleCommand;

if (oracleCommand != null)
{
oracleCommand.Parameters.AddRange(oracleParameters.ToArray());
}
}
}

关于c# - 将 Dapper 与返回游标的 Oracle 存储过程一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com