2013-03-11 51 views
4

请找到这个代码。它在我的本地机器上正常工作。它被复制到Windows Server 2008(64位)。它工作很好,很多天。但现在,它挂了,需要20分钟。相同的代码在我的机器上快速工作。如果我将clob转换为varchar,它会起作用,但它不会支持超过32 K.我更新了oracle客户端,现在它也挂起来了。oracle clob参数转换为字符串挂在asp.net

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 
+1

类似于对此问题,请检查:http://stackoverflow.com/questions/8838115/poor-performance-getting-clob-field-from-oracle-in-net – Pratik 2013-03-11 17:14:34

+0

你的clob的大小是多少?你是否也尝试启用odp tarcing(http://docs.oracle.com/html/E10927_01/featConfig.htm)? – evgenyl 2013-04-14 05:27:31

回答

0

我使用Oracle CLOB和它很容易,没有必要进行类型转换,只是假设它在asp.net一个字符串,这里有一个例子:

暗淡sql =“select xmlagg(XMLElement(”user“,xmlattributes(user_id”user_id“)))。getClobVal()from users”'这只是返回clob值的示例

Dim adp As New Data.OleDb.OleDbDataAdapter (sql,MyConnectionString)

Dim dt As New DataTable

adp.Fill(DT)

昏暗数据作为字符串= dt.Rows [0] [0]的ToString()

现在在数据变量你有结果