2

我有一个以 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())

那么有没有办法以将 OracleDbType 分配给 CLOB 的方式设置 DbType?

4

0 回答 0