Ho una funzione CLR SQL come questo:CLR con valori di tabella funzione con argomento di matrice
public partial class UserDefinedFunctions {
[Microsoft.SqlServer.Server.SqlFunction(TableDefinition = "number int", FillRowMethodName = "FillRow")]
public static IEnumerable MyClrFunction(object obj) {
// read obj array input and then
var result = new ArrayList();
result.Add((SqlInt32)1);
result.Add((SqlInt32)2);
result.Add((SqlInt32)3);
return result;
}
public static void FillRow(object obj, out SqlInt32 number) {
number = (SqlInt32)obj;
}
}
vorrei usarlo in questo modo:
DECLARE @x arrayOfInt
INSERT INTO @x VALUES (10)
INSERT INTO @x VALUES (20)
INSERT INTO @x VALUES (30)
SELECT * FROM dbo.MyClrFunction(@x)
arrayOfInt è:
CREATE TYPE [dbo].[arrayOfInt] AS TABLE(
[item] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[item] ASC
) WITH (IGNORE_DUP_KEY = OFF)
)
Problema che ho è che arrayOfInt è incompatibile con sql_variant. È possibile scrivere la funzione con valori di tabella CLR che ha un argomento array (tabella)?
questo è divertente: "è sempre possibile inviare in un elenco delimitato dei valori", perché mi sono trovato qui durante la ricerca di un modo per passare in una tabella di stringhe in modo da poter utilizzare il CLR per concatenarli in un'unica stringa delimitata :) – BigOmega