У меня проблема, я вызываю процедуру на оракуле 11g, процедура получает clob и отвечает другим CLOB, VARCHAR2 и числом. Процедура вызывается с веб-страницы ASP.NET (на Visual Basic) с использованием поставщика данных оракула (ODP.NET), я могу успешно вызвать процедуру, просмотреть возвращаемые значения VARCHAR2 и NUMBER, но когда я пытаюсь увидеть возвращаемое значение возвращающийся CLOB все, что я получаю, это "Oracle.DataAccess.Types.OracleClob" вместо ожидаемого XML
Я знаю, что возвращенный XML генерируется, потому что в процедуре хранения я создаю текстовый файл, в котором он показывает ожидаемый результат.
Мой код сейчас довольно прост:
Function Index() As String 'ActionResult
Dim xml_message As String
Dim oradb As String = "Data Source=127.0.0.1;User Id=id;Password=pass;"
Dim conn As New OracleConnection(oradb)
Dim oracleDataAdapter As New OracleDataAdapter
oracleDataAdapter = New OracleDataAdapter()
Dim cmd As New OracleCommand
cmd.Connection = conn
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "Common.GetDriverPoints"
cmd.BindByName = True
Dim driver_input As New OracleParameter()
driver_input = cmd.Parameters.Add("p_driver", OracleDbType.Clob)
driver_input.Direction = ParameterDirection.Input
driver_input.Value = <THE_SENDED_XML_VALUE>
Dim driver_output As New OracleParameter()
driver_output = cmd.Parameters.Add("p_output", OracleDbType.Clob)
driver_output.Direction = ParameterDirection.Output
Dim error_flag As New OracleParameter()
error_flag = cmd.Parameters.Add("p_Return", OracleDbType.Int16)
error_flag.Direction = ParameterDirection.Output
Dim error_desc As New OracleParameter()
error_desc = cmd.Parameters.Add("p_ReturnDesc", OracleDbType.Varchar2, 100)
error_desc.Direction = ParameterDirection.Output
conn.Open()
cmd.ExecuteNonQuery()
Dim output As String
output = driver_output.Value.ToString() 'This only returns Oracle.DataAccess.Types.OracleClob
conn.Close()
conn.Dispose()
Return output
End Function
Кроме того, сгенерированный xml составляет около 55 КБ, иногда больше.
Спасибо