关于这个问题,这里SQL CLR 返回两个新列我正在尝试创建一个简单的 SQL CLR 函数,我可以在其中将两个字符串传递给函数,并将两个新列传回给我。
所以说我有以下数据: -
Col A Col B
Bob Joe
Jane John
我希望能够将 Col A 和 Col B 传递给 CLR 函数并让它返回类似这样的内容(其中 Col C 和 D 是新列):-
Col A Col B Col C Col D
Bob Joe BobCLR JoeCLR
Jane John JaneCLR JohnCLR
我有以下代码: -
[SqlFunction(FillRowMethodName = "FillRow")]
public static IEnumerable MyCLRFunction(string A, string B)
{
String[] values = new String[2];
values[0] = A+"CLR";
values[1]= B+"CLR";
return values;
}
private static void FillRow(Object obj, out string C, out string D)
{
String[] row = (object[])obj;
C = (string)row[0];
D = (string)row[1];
}
我可以使用 CREATE ASSEMBLY 在 SQL Server 中注册程序集
我可以在 SQL Server 中创建函数 ok 如下:-
CREATE FUNCTION dbo.MyCLRFunction(@a [nvarchar](4000), @b [nvarchar](4000))
RETURNS TABLE
(c [nvarchar](4000) null, d [nvarchar](4000) null) with execute as caller
AS
EXTERNAL NAME [MyNamespace].[CLRFunctions].[MyCLRFunction]
但是,当我这样做时:-
SELECT * FROM MyCLRFunction('Bob','Joe')
我越来越:-
Msg 6260, Level 16, State 1, Line 1
An error occurred while getting new row from user defined Table Valued Function :
System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.String[]'.
System.InvalidCastException:
at CLRFunctions.FillRow(Object obj, String& C, String& D)