嘿當我使用蟾蜍更新表中所有使用該查詢時工作得很好:VB.net更新甲骨文記錄的ExecuteNonQuery問題
Update CSR.CSR_EAI_SOURCE ces
Set (STATUS_CODE, COMPLETE_DATE, DATA) =
(SELECT 'ERROR', '', REPLACE(REPLACE(c.Data, '…', ' '), '’','''')
FROM CSR.CSR_EAI_SOURCE C
WHERE c.EID = ces.EID
AND c.STATUS_CODE = 'ERROR')
WHERE EXISTS (SELECT 1
FROM CSR.CSR_EAI_SOURCE C
WHERE c.EID = ces.EID
AND c.STATUS_CODE = 'ERROR');
但是,一旦我嘗試做同樣的事情在我的VB。使用此代碼網方案:
Dim OracleCommand As New OracleCommand()
Dim ra As Integer
OracleCommand = New OracleCommand("UPDATE CSR.CSR_EAI_SOURCE ces " & _
"SET (STATUS_CODE, COMPLETE_DATE, DATA) = " & _
"(SELECT 'ERROR', '', REPLACE(REPLACE(c.Data, '…', ' '), '’','''') " & _
"FROM CSR.CSR_EAI_SOURCE C " & _
"WHERE (c.EID = ces.EID) " & _
"AND c.STATUS_CODE = 'ERROR') " & _
"WHERE EXISTS (SELECT 1 " & _
"FROM CSR.CSR_EAI_SOURCE C " & _
"WHERE (c.EID = ces.EID) " & _
"AND c.STATUS_CODE = 'ERROR')", OracleConnection)
Try
ra = OracleCommand.ExecuteNonQuery()
OracleConnection.Close()
MsgBox("done")
Catch ex As Exception
MsgBox("ERROR: " & Err.Description & " " & Err.Number)
OracleConnection.Close()
End Try
它停留在RA = OracleCommand.ExecuteNonQuery()不斷,直到我得到的錯誤
CLR無法從COM上下文0x3327fa8轉換到COM上下文0x3328118 60秒。擁有目的地上下文/公寓的線程很可能要麼進行非抽水等待,要麼處理非常長的運行操作而不抽取Windows消息。這種情況通常會對性能產生負面影響,甚至可能導致應用程序無法響應或內存使用量不斷累積。爲了避免這個問題,所有的單線程單元(STA)線程都應該使用抽取等待原語(比如CoWaitForMultipleHandles),並在長時間運行的操作中定期抽取消息。
我能做些什麼才能在VB.net中正常工作,因爲它在TOAD運行相同的查詢時工作得很好?
謝謝!
David
當您在TOAD中運行查詢時,是否需要很長時間才能執行? – 2011-03-17 19:30:31