好吧,我真的需要找到一種方法來通過字符串來做到這一點,而不是使用更新查詢來做到這一點。VB.net由於對象的當前狀態,Oracle操作無效
Dim theXMLCode As OracleClob
Dim OracleConnection2 As New OracleConnection()
Dim dr2 As OracleDataReader
Dim holdXML As String = ""
Public Function connectToOracleDB2() As Boolean
OracleConnection2.ConnectionString = "User Id=" & dbUserId & ";Password=" & dbPassword & ";Data Source=(DESCRIPTION=(ADDRESS_LIST=" & _
"(ADDRESS=(PROTOCOL=TCP)(HOST=" & dbHost & ")(PORT=" & dbPort & ")))" & _
"(CONNECT_DATA=(SERVICE_NAME=" & dbServiceName & ")))"
Try
OracleConnection2.Open()
Return True
Catch ee As Exception
OracleConnection2.Close()
Return False
End Try
End Function
Dim strSQL = "UPDATE CSR.TARGET ces " & _
"SET (STATUS_CODE, COMPLETE_DATE, DATA) = " & _
"(SELECT 'ERROR', '', (:XML_DATA) " & _
"FROM CSR.SOURCE C " & _
"WHERE (c.EID = ces.EID) " & _
"AND c.STATUS_CODE = 'ERROR') " & _
"WHERE EXISTS (SELECT 1 " & _
"FROM CSR.SOURCE C " & _
"WHERE (c.EID = ces.EID) " & _
"AND c.STATUS_CODE = 'ERROR')"
Try
Dim parmData As New OracleParameter
With parmData
.Direction = ParameterDirection.Input
.OracleDbType = OracleDbType.Clob
.ParameterName = "XML_DATA"
.Value = holdXML
End With
OracleCommand2.Parameters.Add(parmData)
OracleCommand2.CommandText = strSQL
OracleCommand2.ExecuteNonQuery()
,但我得到的錯誤:
錯誤:操作無效由於對象的當前狀態。
就行了:
OracleCommand2.ExecuteNonQuery()
任何幫助將是巨大的,讓這件事的工作:O)
大衛
是holdXML是臨時LOB嗎?請參閱http://msdn.microsoft.com/en-us/library/cydxhzhz(v=vs.80).aspx在.NET中使用Oracle BLOBs – tawman 2011-04-18 16:42:25
holdXML是一個從CLOB填充的字符串(blah.value )。我需要找到一種方法將其轉換回CLOB並再次將其插入到數據庫中。你發佈的鏈接似乎沒有使用CLOB? – StealthRT 2011-04-18 17:44:36
MSDN鏈接中有一個CLOB示例。 Oracle BLOB/CLOB是指針,你不能直接從.NET更新它們。 Google /搜索dbms_lob.createtemporary PL/SQL幫助程序。 – tawman 2011-04-18 18:36:20