4

このコードを見つけてください。ローカルマシンで正常に動作しています。Windows Server 2008(64ビット)にコピーされました。それは何日もうまく機能していました。しかし今、それはぶら下がっていて、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 値を返す例にすぎません

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

Dim dt As New DataTable

adp.Fill(dt)

文字列としての薄暗いデータ = dt.Rows[0][0].toString()

そして今、データ変数に結果があります

于 2013-04-25T04:41:11.697 に答える