4

请找到此代码。它在我的本地机器上正常工作。它被复制到 windows server 2008 (64bit)。它工作了很多天。但现在,它正在挂起,需要 20 分钟。相同的代码在我的机器上运行得很快。如果我将 clob 转换为 varchar,它会工作,但它不支持超过 32 K。我更新了 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
4

1 回答 1

0

我使用的是Oracle Clob,非常简单,不需要进行类型转换,假设它是asp.net中的字符串,下面是一个例子:

Dim sql = "select xmlagg(XMLElement("user",xmlattributes(user_id "user_id"))).getClobVal() from users" '这只是返回 clob 值的示例

将 adp 调暗为新 Data.OleDb.OleDbDataAdapter(sql, MyConnectionString)

将 dt 调暗为新数据表

adp.填充(dt)

暗淡数据 As String = dt.Rows[0][0].toString()

现在在数据变量中你有结果

于 2013-04-25T04:41:11.697 回答