ここでこの質問に関してSQL CLR return two new columns私は関数に2つの文字列を渡すことができ、2つの新しい列を返す簡単なSQL CLR関数を作成しようとしています。私はCLR機能にコルAとコルBに合格できるようにしたいと、それはコルCとDであることにより、(このような何かを返す必要がありSQL Server CLR 2つの新しい列をデータフローに返すためのTVF
Col A Col B
Bob Joe
Jane John
- :
は、だから私は、次のデータを持っていると言います新しい列): - 私は次のコードを持っている
Col A Col B Col C Col D
Bob Joe BobCLR JoeCLR
Jane John JaneCLR JohnCLR
: - 私はSQLでアセンブリを登録することができます
[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];
}
をサーバー[OK]を次のように私は、SQL ServerでOK関数を作成することができますASSEMBLY
をCREATE使用: -
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)
を