我使用短小精悍做一些Oracle訪問。我有一個場景,我必須有一個類型爲OracleDbType.Clob的輸出參數。由於我使用的短小精悍,因此使用基地的DbType枚舉我用DbType.Object枚舉這裏建議http://docs.oracle.com/html/B14164_01/featOraCommand.htm以代替OracleDbType.Clob。小巧玲瓏與甲骨文CLOB類型
然而,該設置命令參數(在hardy深處)爲對象的DbType和Oracle類型斑點(視的DbConnection提供商的具體的OracleParameter)。如果這個參數的類型是Clob而不是Blob,那麼這個Oracle proc的問題纔有效。
純ADO代碼就像魅力一樣工作(使用OracleParameter和OracleConnection等),但似乎沒有辦法設置具體類型或鉤子到DapParameter創建過程中,以便在返回的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;
}
這種失敗:
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");
任何想法?
感謝,
喬恩
看起來不錯!尼斯。 –
@MarcGravell何時會選擇通過ICustomQueryParameter創建/使用自定義IDynamicParameters實現? – Damian
@Damian正好是一對一對0,基本上 –