2

我知道如何在 SQL Server 中加载 CLR DLL 并访问其静态方法,这些方法不会在其方法签名中包含输出参数,但我无法意识到如何使用具有输出参数的方法。

例如,在 SQL 服务器中访问 Math.dll 的阶乘方法很简单,如下所示:

CREATE ASSEMBLY MathAsm FROM 'C:\Programming\c#\SQLCLRIntegrationExample\assemblies\Math.dll'
    WITH PERMISSION_SET = EXTERNAL_ACCESS;
Go

CREATE FUNCTION Factorial(@x FLOAT)
    RETURNS FLOAT
    EXTERNAL NAME MathAsm.Math.Factorial;
Go

但是如果方法的签名是这样的:

public static int GetInfo(int[] inputParams, out int[] outputParams)

提前致谢

4

1 回答 1

1

方法的签名有限制。你读过这个:

http://technet.microsoft.com/en-us/library/ms131092.aspx

可以有 OUT 参数,但 int[] out - upss。另请注意,只有 SP 可以具有输出参数。

因此,要访问这些方法,您需要将函数编写成如下内容:

public SqlInt GetInfo(SqlXml inputParamsXml, out SqlXml  ouputParamsXml)
{
   var inputParams = MyXmlToArrayFunc(inputParamsXml);
   int[] outputParams;
   var r= YourModule.GetInfo(inputParams, out outputParams);
   ouputParamsXml = MyArrayToXmlFunc(outputParams);
   return new SqlInt(r);
}
于 2014-02-06T10:52:59.323 回答