Я пытаюсь вставить кусок Xml, размер которого превышает 4000 символов, в поле XmlType в таблице Oracle.
Первоначально мой код работал так:
DbParameter parameter = new DbParameter;
parameter = clientFactory.CreateParameter(":p_xml_data", DbType.AnsiString, messageToLog.Length, ParameterDirection.Input, messageToLog);
Однако, как только я начал пытаться вставлять блоки XML размером более 4000 байт, я получил:
ORA-01461: can bind a LONG value only for insert into a LONG column
Thisтакая же проблема, как и этот вопрос 2508987 / insert-xml-with-больше-4000-символов-в-oracle-xmltype-column , однако у меня нет DbType.Clob в качестве опции(его не существует).
Далее я попытался изменить тип на DbType.Object, надеясь, что он просто преобразует его во все, что ему нужно, но я получаю это сообщение:
Cannot bind type System.String as Blob
Затем я попытался использовать DbType.XMLЯ изменил свой код, чтобы переместить messageToLog в объект SqlXml:
SqlXml sx;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(messageToLog);
using (XmlNodeReader xnr = new XmlNodeReader(xmlDoc))
{
sx = new SqlXml(xnr);
}
И соответственно изменил параметр:
parameter = providerFactory.CreateParameter(":p_xml_data", DbType.Xml, messageToLog.Length, ParameterDirection.Input, sx);
Теперь я получаю:
Value is not valid for DbType: Xml
Правда, я просто хочу хранить большие блоки XML в моей колонке.