首页 > 代码库 > 自定义sql server 聚合涵数

自定义sql server 聚合涵数

using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;using System.Text;using System.Collections.Generic;[Serializable][Microsoft.SqlServer.Server.SqlUserDefinedAggregate(Format.UserDefined,    IsInvariantToDuplicates = false,    IsInvariantToNulls = true,    IsInvariantToOrder = false,    IsNullIfEmpty = true,    MaxByteSize = 8000)]public struct SumPart : IBinarySerialize {    private StringBuilder _reuslt;    //private List<string> _li ;    public void Init()    {        // 在此处放置代码        _reuslt = new StringBuilder();        //_li = new List<string>();     }    public void Accumulate(SqlString Value)    {        // 在此处放置代码        if (Value.IsNull)        {            return;        }        else        {            //_li.Add(Value.Value);            if (_reuslt.Length > 0)            {                _reuslt.Append("$");            }            _reuslt.Append(Value.Value);        }    }    public void Merge(SumPart Group)    {        // 在此处放置代码        _reuslt.Append(Group._reuslt);          }    public SqlString Terminate()    {        // 在此处放置代码        //if(li.Count>0)  为什么li老是==null????         //if (_li == null)        //{        //    return new SqlString("");        //}        if (_reuslt.Length > 0)        {            string strReturn = "";            string[] arrayStr = _reuslt.ToString().Split(‘$‘);            List<string> li = new List<string>();             for (int i = 0; i < arrayStr.Length; i++)            {                li.Add(arrayStr[i]);            }            li.Sort();            foreach (string item in li)            {                strReturn += "$"+item ;            }            return new SqlString(strReturn);            //return new SqlString(_reuslt.ToString());        }               return new SqlString("");    }    // 这是占位符成员字段    private int var1;    #region IBinarySerialize 成员    public void Read(System.IO.BinaryReader r)    {        _reuslt = new StringBuilder(r.ReadString());    }    public void Write(System.IO.BinaryWriter w)    {        w.Write(_reuslt.ToString());     }    #endregion}

 

自定义sql server 聚合涵数