我知道如何在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)
提前致谢
答案 0 :(得分: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);
}