SQL Serverでカスタム集計関数を作成しようとしています。私はついにそれを働かせました(C#でアセンブリを書いています)。SQL Serverでユーザー定義集計の結果が正しくありません
目的は、グループ内のすべての文字列を連結することですが、結果は空の文字列です。ここで
は、C#で私のクラスである:
[SqlUserDefinedAggregate(Format.UserDefined, MaxByteSize = 32)]
public struct STRING_CONCAT : IBinarySerialize
{
//result - concatenated string
SqlString result;
public void Init()
{
//empty the result
result = "";
}
public void Accumulate(SqlString value)
{
result += value;
}
public void Merge(STRING_CONCAT value)
{
Accumulate(value.Terminate());
}
public SqlString Terminate()
{
return result;
}
public void Read(BinaryReader r)
{
r.BaseStream.Position = 0;
result = r.ReadString();
}
public void Write(BinaryWriter w)
{
w.Write(result.GetUnicodeBytes());
w.BaseStream.Position = 0;
}
}
そしてここでは、T-SQLの一部です:
CREATE ASSEMBLY [SQLAggregate]
FROM 'C:\CSharp\SQLAggregate\SQLAggregate\bin\Debug\SQLAggregate.dll'
GO
create aggregate STRING_CONCAT
(@string nvarchar(100))
returns nvarchar(4000)
external name [SQLAggregate].[SQLAggregate.STRING_CONCAT]
デバッグヘルプ(「なぜこのコードは機能していませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。 –
@TabAllemanこの質問にはすべてが含まれています。 – Evk
@Evkここで、入力と期待される出力はどこに表示されますか? –