我有一个返回XML字符串的存储过程。当我直接从表中复制它时,我完全按照我的预期得到了所有内容。
但是,当我尝试使用C#运行此存储过程时,ExecuteScalar()仅返回我期待的70行中的46行。
以下是我使用的代码:
using (SqlConnection con = new SqlConnection("Data Source=TEST;Initial Catalog=BMRSK;Integrated Security=True"))
{
using (SqlCommand buildXML = new SqlCommand("usp_BUILD_RISKCALC_XML", con))
{
buildXML.CommandType = CommandType.StoredProcedure;
con.Open();
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml((string)buildXML.ExecuteScalar());
xdoc.Save("Test.xml");
}
}
这是我从行
获得的例外xdoc.LoadXml((string)buildXML.ExecuteScalar());
未处理的类型' System.Xml.XmlException'发生在 system.xml.dll的
其他信息:发生了意外的文件结束。该 以下元素未关闭:ARGUMENT,ARGUMENT-LIST,OPERATION, 操作列表,RISKCALC。第1行,第2034号。
任何想法都将不胜感激。谢谢。
答案 0 :(得分:0)
ExecuteScalar只读取2033个字符。请改用ExecuteXmlReader。
private static void BuildXML()
{
using (SqlConnection con = new SqlConnection("Data Source=TEST;Initial Catalog=BMRSK;Integrated Security=True"))
{
using (SqlCommand buildXML = new SqlCommand("usp_BUILD_RISKCALC_XML", con))
{
buildXML.CommandType = CommandType.StoredProcedure;
con.Open();
XmlReader xmlReader = buildXML.ExecuteXmlReader();
XmlDocument xdoc = new XmlDocument();
xdoc.Load(xmlReader);
xdoc.Save("Test.xml");
}
}
}