2014-01-29 2 views
2

Я знаю, как загрузить DLL CLR в SQL Server и получить доступ к его статическим методам, которые не включают выходные параметры в их сигнатурах метода, но то, что я не могу понять, как я могу использовать методы, которые имеют выходные параметры.Как получить доступ к статическим методам внешних DLL, которые включают выходные параметры в SQL Server

Например он strightforward для доступа факторный метод Math.dll «s в сервере SQL, как это:

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) 

Заранее спасибо

ответ

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); 
}