Tôi đang sử dụng công cụ lập bản đồ để thực hiện một số truy cập oracle. Tôi có một kịch bản mà tôi phải có một tham số đầu ra với một loại OracleDbType.Clob. Như tôi đang sử dụng dapper và do đó bằng cách sử dụng các DbType cơ sở liệt kê tôi đang sử dụng Enb DbType.Object như đề nghị ở đây http://docs.oracle.com/html/B14164_01/featOraCommand.htm để đứng trong cho OracleDbType.Clob.Dapper & Oracle Clob type
Tuy nhiên, điều này đặt tham số lệnh (sâu xuống trong dapper) là đối tượng DbType và loại orb Blob (như nhà cung cấp DbConnection là OracleParameter cụ thể). Vấn đề là Oracle proc này chỉ hoạt động nếu tham số này thuộc loại Clob chứ không phải Blob.
Mã ADO thuần túy hoạt động như một nét duyên dáng (Sử dụng OracleParameter và OracleConnection, v.v.) nhưng dường như không có cách nào để đặt loại hoặc móc cụ thể vào quá trình tạo DbParameter này trong trình đơn để thay đổi OracleType này trên CommandParameter được trả về?
này hoạt động:
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;
}
này thất bại:
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");
Bất kỳ ý tưởng ??
Cảm ơn,
Jon
Có vẻ tuyệt vời! Tốt đẹp. –
@MarcGravell khi nào người ta chọn tạo/sử dụng triển khai IDynamicParameters tùy chỉnh trên ICustomQueryParameter? – Damian
@Damian chính xác một lần so với 0-to-nhiều, về cơ bản là –