dynamicParameters = new DynamicParameters(); dynamicParameters.Add("a1", "value") ; dynamicParameters.Add("b1", "value"); dynamicParameters.Add(" c1", "value"); dynamicParameters.Add("d1", "value"); dynamicParameters.Add ("a2", "value"); dynamicParameters.Add("b2", "value"); dynamicParameters.Add result = connection.ExecuteScalar(sql, dynamicParameters); } } catch
dynamicParameters = new DynamicParameters(); dynamicParameters.Add("a1","value"); dynamicParameters.Add ("b1","value"); dynamicParameters.Add("c1","value"); dynamicParameters.Add("a2","value"); dynamicParameters.Add (@idn,@drn) on duplicate key update dr=values(dr); DynamicParameters dynamicParameters = new DynamicParameters (); dynamicParameters.Add("id1","value"); dynamicParameters.Add("dr1","value"); dynamicParameters.Add ("id2","value"); dynamicParameters.Add("dr2","value"); ... dynamicParameters.Add("idn","value"); dynamicParameters.Add
解决方案是使用游标并在DynamicParameters集合中返回输出。 要添加额外的皱纹,Dapper中的常规DynamicParameters.Add()方法使用System.Data.DbType作为可选的dbType参数,但查询的游标参数必须是Oracle.ManagedDataAccess.Client.OracleDbType.RefCursor System.Data; public class OracleDynamicParameters : SqlMapper.IDynamicParameters { private readonly DynamicParameters dynamicParameters = new DynamicParameters(); private readonly List<OracleParameter> oracleParameters AddParameters(IDbCommand command, SqlMapper.Identity identity) { ((SqlMapper.IDynamicParameters)dynamicParameters
public class OracleDynamicParameters : SqlMapper.IDynamicParameters { private readonly DynamicParameters dynamicParameters = new DynamicParameters(); private readonly List<OracleParameter> oracleParameters IDbCommand command, SqlMapper.Identity identity) { ((SqlMapper.IDynamicParameters)dynamicParameters
Dapper的DynamicParameters不支持游标类型 如果你用Dapper来进行Oracle的存储过程的操作,刚好这个存储过程需要传入一个游标类型的输出值,如下所示,你会发现在DbType中是不包含游标类型的 var p = new DynamicParameters(); p.Add("foo", "bar"); p.Add("baz_cursor", dbType: DbType.?
Code = "Single_Insert_1"}, commandType: CommandType.StoredProcedure); // Dynamic DynamicParameters parameter = new DynamicParameters(); parameter.Add("@Kind", InvoiceKind.WebInvoice, DbType.Int32, ParameterDirection.Input
public class OracleDynamicParameters : SqlMapper.IDynamicParameters { private readonly DynamicParameters dynamicParameters = new DynamicParameters(); private readonly List<OracleParameter> oracleParameters IDbCommand command, SqlMapper.Identity identity) { ((SqlMapper.IDynamicParameters)dynamicParameters
存储过程名要小写,传递的参数名要和存储过程中的参数名一致(不区分大小写) //连接字符串中的数据库名也要小写,否则抛异常:在数据库***中找不到存储过程××× var parameters = new DynamicParameters