请查看此代码。它在我的本地机器上正常工作。它被复制到windows server 2008(64位)。它工作了许多天。但现在,它挂着,花了20分钟。同样的代码工作在我的机器快。如果我将clob转换为varchar,它将工作,但它将不支持超过32k。我更新了oracle客户端,现在它也挂起了
Dim cn As New OracleConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
Dim cmd As New OracleCommand
cn.Open()
cmd.Connection = cn
cmd.CommandType = Data.CommandType.StoredProcedure
cmd.CommandText = "Inet_Pkg_Menu.TopMenu"
cmd.Parameters.Add("pBrCode", OracleDbType.Int32).Direction = Data.ParameterDirection.Input
cmd.Parameters.Add("pRes", OracleDbType.Clob).Direction = Data.ParameterDirection.Output
cmd.Parameters(0).Value = Session("user_code")
cmd.ExecuteNonQuery()
Dim s As String
Dim olob As OracleClob
olob = CType(cmd.Parameters("pRes").Value, OracleClob)
s = System.Convert.ToString(olob.Value) 'Hanged line
我正在使用Oracle Clob,这是非常容易的,没有必要进行类型转换,只是假设它作为asp.net中的字符串,这里是一个例子:
Dim sql = "select xmllagg (XMLElement("user",xmlattributes(user_id "user_id"))).getClobVal() from users" ' '这只是返回clob值的例子
Dim adp As New Data.OleDb。MyConnectionString OleDbDataAdapter (sql)
adp.Fill (dt)
Dim data As String = dt.Rows[0][0].toString()
现在在data变量中有结果