我有一个存储过程,其中CLOB作为输入。
我正在寻找重构器,所以我的Oracle库没有被直接引用。当我从对象创建参数时,我得到了一个IDbDataParameter对象。
在不定义类型的情况下将字符串传递给它似乎工作正常(设置名称和值)。
但是,文本在32767处被切断,这是Oracle VARCHAR的最大长度。
所以,我的问题是,如何设置OracleDbType以键入Clob,而不必公开程序集或使用反射。我尝试使用二进制的DbType,但它失败了。如果有更好的方法,我宁愿不加载使用反射的库。
以下是一些示例代码:
''' <summary>
''' Creates a Parameter
''' </summary>
''' <param name="name"></param>
''' <param name="value"></param>
''' <returns></returns>
Public Function CreateParameter(ByVal name As String, ByVal value As String) As IDbDataParameter
Dim parameter As IDbDataParameter = m_Db.CreateParameter()
parameter.ParameterName = name
parameter.Value = value
Return parameter
End Function
来自来电者。 p_notes参数是我想成为CLOB的。
oDAL = New DAL.DataAccessLayer(m_BSL)
Dim parameters As New List(Of IDbDataParameter)
parameters.Add(oDAL.CreateParameter("p_no", compNo))
parameters.Add(oDAL.CreateParameter("p_sys", m_BSL.CurrentSystem.Description.ToString))
parameters.Add(oDAL.CreateParameter("p_notes", notes))
parameters.Add(oDAL.CreateParameter("p_chuser", m_BSL.CurrentUser.ToString))
oDAL.Exec_SP("P_UPDATE_MASTSTAT_NOTES", parameters.ToArray())
那么有没有办法设置DbType以便将OracleDbType分配给CLOB?