我正在将CLR与SQL Server 2008集成,它已成功配置。但我在这个SqlProcedure中调用了一个web服务。
这是代码,我试图返回xml响应。
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SendReceiveAsXML(SqlString request)
{
SqlPipe sp;
sp = SqlContext.Pipe;
MsgWS obj = new MsgWS();
string s = obj.SendAndReceiveAsXml(request.ToString());
sp.Send(s);
}
可能存在“最大长度超出异常”的可能性。为了防止这种情况,我需要检索响应作为读者,这是我与sql集成的最终组件的要求。
欢迎任何建议。
答案 0 :(得分:3)
Pipe.Send(string)
用于将邮件返回给客户端。对于如此大的文本,您应该创建一个SqlDataRecord
,将其作为结果集返回给客户端 - 您可以将其有效地作为varchar(max)
列返回。
因此,您可以编辑方法的结尾:
string s = obj.SendAndReceiveAsXml(request.ToString());
var md = new SqlMetaData("ColumnA", SqlDbType.VarChar, -1);
var row = new SqlDataRecord(md);
row.SetString(0, s);
sp.Send(row);