日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQLCLR(五)聚合

發(fā)布時間:2025/7/14 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQLCLR(五)聚合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SQL Server中的聚合,常用的比如max,count之類。 我們現在也可以在SQLCLR里創(chuàng)建自定義的聚合。Visual Studio 2005中提供的聚合模板是一個結構,標注了[Serializable],[SqlUserDefinedAggregate]標簽,這將讓SQLCLR知道這是一個聚合函數。
看一段代碼,這段代碼來自SQL Server 2005聯機叢書,本來自己想寫一段,但突然公司有些事要做,沒時間了。示例代碼作用是合并同一部書(ID相同)的作者。
using?System;
using?System.Data;
using?Microsoft.SqlServer.Server;
using?System.Data.SqlTypes;
using?System.IO;
using?System.Text;

[Serializable]
[SqlUserDefinedAggregate(
????Format.UserDefined,?
//use?clr?serialization?to?serialize?the?intermediate?result
????IsInvariantToNulls?=?true,?//optimizer?property
????IsInvariantToDuplicates?=?false,?//optimizer?property
????IsInvariantToOrder?=?false,?//optimizer?property
????MaxByteSize?=?8000)?//maximum?size?in?bytes?of?persisted?value
]
public?class?Concatenate?:?IBinarySerialize
{
????
/**////?<summary>
????
///?The?variable?that?holds?the?intermediate?result?of?the?concatenation
????
///?</summary>

????private?StringBuilder?intermediateResult;

????
/**////?<summary>
????
///?Initialize?the?internal?data?structures
????
///?</summary>

????public?void?Init()
????
{
????????
this.intermediateResult?=?new?StringBuilder();
????}


????
/**////?<summary>
????
///?Accumulate?the?next?value,?not?if?the?value?is?null
????
///?</summary>
????
///?<param?name="value"></param>

????public?void?Accumulate(SqlString?value)
????
{
????????
if?(value.IsNull)
????????
{
????????????
return;
????????}


????????
this.intermediateResult.Append(value.Value).Append(',');
????}


????
/**////?<summary>
????
///?Merge?the?partially?computed?aggregate?with?this?aggregate.
????
///?</summary>
????
///?<param?name="other"></param>

????public?void?Merge(Concatenate?other)
????
{
????????
this.intermediateResult.Append(other.intermediateResult);
????}


????
/**////?<summary>
????
///?Called?at?the?end?of?aggregation,?to?return?the?results?of?the?aggregation.
????
///?</summary>
????
///?<returns></returns>

????public?SqlString?Terminate()
????
{
????????
string?output?=?string.Empty;
????????
//delete?the?trailing?comma,?if?any
????????if?(this.intermediateResult?!=?null
????????????
&&?this.intermediateResult.Length?>?0)
????????
{
????????????output?
=?this.intermediateResult.ToString(0,?this.intermediateResult.Length?-?1);
????????}


????????
return?new?SqlString(output);
????}


????
public?void?Read(BinaryReader?r)
????
{
????????intermediateResult?
=?new?StringBuilder(r.ReadString());
????}


????
public?void?Write(BinaryWriter?w)
????
{
????????w.Write(
this.intermediateResult.ToString());
????}

}
這里有幾個比較重要的方法:Terminate,這個方法是聚合最后調用的方法,它返回最后的值。可以是SQL Server的任何標量。;Accumulate,聚合每處理一行數據的時候都會調用一次,并將要處理的數據傳給方法。可以在函數內部進行比如比較,合并之類的處理。;
CREATE?TABLE?BookAuthors
(
???BookID???
int???????NOT?NULL,
???AuthorName????
nvarchar(200)?NOT?NULL
)

INSERT?BookAuthors?VALUES(1,?'Johnson')
INSERT?BookAuthors?VALUES(2,?'Taylor')
INSERT?BookAuthors?VALUES(3,?'Steven')
INSERT?BookAuthors?VALUES(2,?'Mayler')
INSERT?BookAuthors?VALUES(3,?'Roberts')
INSERT?BookAuthors?VALUES(3,?'Michaels')

SELECT?BookID,?dbo.MyAgg(AuthorName)
FROM?BookAuthors
GROUP?BY?BookID
結果如下
BookID Author Names

1

Johnson

2

Taylor, Mayler

3

Roberts, Michaels, Steven


Microsoft SQL Server Management Studio為我們提供了數據庫內對象的集中管理功能,前面幾篇創(chuàng)建的SQLCLR對象,都可以在數據庫的可編程性下相應模塊里找到。

這一系列到此就算是結束了,謝謝大家。

轉載于:https://www.cnblogs.com/wayne-ivan/archive/2007/06/19/788555.html

總結

以上是生活随笔為你收集整理的SQLCLR(五)聚合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天堂在线一区 | 国产真人无码作爱视频免费 | 午夜999| 亚洲自拍偷拍精品视频 | 精品久久9999| a天堂资源 | 久久精品亚洲天堂 | 牛牛av国产一区二区 | 国产激情精品一区二区三区 | 992av| 懂色av中文一区二区三区天美 | 四虎影院在线看 | 国产精品探花在线观看 | 久久y| 免费在线观看视频 | 日本一级黄色 | 91一区| www色com | 制服.丝袜.亚洲.中文.综合懂 | 亚洲一区在线电影 | 天天干导航 | 美女人人操| 97伊人久久| 一对一色视频聊天a | 亚洲国产精品二区 | 偷拍综合网 | 亚洲日日骚 | 日产精品久久久久久久蜜臀 | 毛片网站在线观看 | 日本在线黄色 | 色综合天天色 | www婷婷 | 91视频精品 | 亚洲欧美一区二区三区四区五区 | 国产亚洲欧美在线视频 | 四虎永久免费地址 | 久久久久久人妻一区二区三区 | 国产精品一级 | 色婷婷av一区二区三区麻豆综合 | brazzers欧美极品少妇 | 黄色另类小说 | 亚欧成人精品一区二区 | 久久亚洲精品中文字幕 | 超碰97人 | 亚洲人成电影网站 | 日韩激情在线播放 | 97人人看| 五月av综合av国产av | 久久这里只有精品6 | 日韩精品v| 尹人成人网 | 美女亚洲一区 | 久久精品国产亚洲av高清色欲 | 久久久久久国产 | 91免费 看片 | 992tv在线成人免费观看 | 动漫美女被吸乳奶动漫视频 | 97视频播放 | 美女扒开屁股让男人桶 | 久久久久久久久免费看无码 | 伦理片中文字幕 | 日韩二区在线观看 | 亚洲69视频 | 欧美大肚乱孕交hd孕妇 | av男人的天堂网 | av超碰 | 激情文学亚洲色图 | 天天干影院 | 九九激情网 | 日本xxxx在线观看 | 天天干天天干天天操 | 丁香六月激情综合 | 精品国产无码在线观看 | 午夜时刻免费入口 | 亚洲精品中文字幕在线观看 | 精品少妇人妻AV无码专区在线 | 成人靠逼视频 | 久久久性色精品国产免费观看 | 综合久久av | 操校花视频| 久久午夜福利电影 | 黄色欧美网站 | 婷婷开心激情网 | 成人免费影视网站 | 国产黄色视 | 少妇一级淫片免费观看 | 98精品视频 | 日本69式三人交 | 久久免费视频2 | 爱乃なみ加勒比在线播放 | 日日综合网 | 久久av不卡 | 黄色av播放 | 国产校园春色 | 荒岛淫众女h文小说 | 国产欧美日韩激情 | 天堂最新资源在线 | 亚洲国产成人精品久久 | 国产一级特黄aaa大片 |