我是一个有用的助手,可以为您翻译文本。以下是您需要翻译的内容:
这与2508987/insert-xml-with-more-than-4000-characters-into-a-oracle-xmltype-column中的问题相同,但我没有DbType.Clob这个选项(它不存在)。
接下来,我尝试将类型更改为DbType.Object,希望它会转换为所需的任何内容,但是我收到了此消息:
现在我明白了:
我正在尝试将一个大于4000个字符的Xml块插入到Oracle表中的XmlType字段中。
最初我的代码是这样工作的:
DbParameter parameter = new DbParameter;
parameter = clientFactory.CreateParameter(":p_xml_data", DbType.AnsiString, messageToLog.Length, ParameterDirection.Input, messageToLog);
但是,当我尝试插入大于4000字节的XML块时,就会出现以下错误:
ORA-01461: can bind a LONG value only for insert into a LONG column
这与2508987/insert-xml-with-more-than-4000-characters-into-a-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块。