Хорошо, мне действительно нужно найти способ сделать это с помощью строки в clob вместо использования запроса на обновление, чтобы сделать все.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()
Любая помощь будет здорово, чтобы получить эту вещь работу: о)
Дэвид
Is holdXML a temp LOB? См. Http://msdn.microsoft.com/en-us/library/cydxhzhz(v=vs.80).aspx для работы с Oracle BLOB в .NET. – tawman
holdXML - это строка, заполненная из CLOB (blah.value). Мне нужно найти способ конвертировать его обратно в CLOB и снова вставить в базу данных. Ссылка, которую вы разместили, похоже, не использует CLOB? – StealthRT
В ссылке MSDN есть пример CLOB. Oracle BLOB/CLOB являются указателями, и вы не можете обновлять их непосредственно из .NET. Google/Поиск помощника dbms_lob.createtemporary PL/SQL. – tawman