C 中建立SQLServer的自定義聚合函式

2021-05-17 20:50:19 字數 2309 閱讀 3760

1.建立:使用vs2005的「聚合函式」模板建立,實現以下幾個方法:

init():給每個要聚合的新組初始化;

accumulate():將每個值聚合;

merge():將乙個聚合組的結果新增到當前組中;

terminate():返回結果;

2.部署:通過vs2005部署自動在sqlserver中建立聚合函式;

3.使用:在sql語句中像使用其他聚合函式一樣使用自定義聚合函式。

samplesum.cs:

view source

print?

01.usingsystem;

02.usingsystem.data;

03.usingsystem.data.sqlclient;

04.usingsystem.data.sqltypes;

05.usingmicrosoft.sqlserver.server;

06.

07.

08.[serializable]

09.[microsoft.sqlserver.server.sqluserdefinedaggregate(format.native)]

10.publicstructsamplesum

11.

19.

20.//將每個值聚合

21.publicvoidaccumulate(sqlint32 value)

22.

25.

26.//將乙個聚合組的結果新增到當前組中

27.publicvoidmerge(samplesum group)

28.

31.

32.//返回結果

33.publicsqlint32 terminate()

34.

37.

38.}

測試指令碼:

view source

print?

1.selectc.categoryname, dbo.samplesum(p.quantity)as'sum'

2.fromproducts pinnerjoincategories c

3.onp.categoryid = c.categoryid

4.groupbyp.categoryid, c.categoryname

sql server 中主鍵自增長

今天我在處理新聞發布系統的增加新聞類別的時候,我發現單純的向資料庫中出入類別名,會報錯誤說沒有串入新聞類別id,但是之前新增的時候沒有這錯誤!這是建立新聞類別表的sql語句 create table category 建立category表 id int identity 1,1 primary k...

SQLServer中identity 自增 的用法

一 identity的基本用法 1.含義 identity表示該字段的值會自動更新,不需要我們維護,通常情況下我們不可以直接給identity修飾的字元賦值,否則編譯時會報錯 2.語法 列名 資料型別 約束 identity m,n m表示的是初始值,n表示的是每次自動增加的值 如果m和n的值都沒有...

Sql server 中關閉自增字段

今天有同事問我乙個關於 sql server自增字段值如何關閉自增,手動修改自增id的問題。以前經常使用這樣的sql 語句,但一時又想不起來,在幫助裡找了半天。唉 看來人真的老了,啥都記不起。高中的時候數學老師經常愛講這樣一句話 好記性不如亂筆頭 越來越感覺到這句話太對了 以後要勤記,多記,好好記。...