CLR集成以返回结果集

时间:2012-10-09 07:25:42

标签: .net sql-server-2008 .net-assembly clrstoredprocedure

我正在将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集成的最终组件的要求。

enter image description here

欢迎任何建议。

1 个答案:

答案 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);