电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

如何:創建和運行 CLR SQL Server 聚合

瀏覽:153日期:2023-11-07 10:16:15

通過向 SQL Server 項目添加“聚合”項創建 SQL 聚合。部署成功后,在托管代碼中創建的聚合像其他任何 SQL Server 聚合一樣被調用和執行。

注意; 在默認情況下,Microsoft SQL Server 中關閉了公共語言運行庫 (CLR) 集成功能。必須啟用該功能才能使用 SQL Server 項目項。若要啟用 CLR 集成,請使用 sp_configure 存儲過程的“啟用 clr”選項。有關更多信息,請參見 啟用 CLR 集成。注意; SQL Server 集合要求實現四個特別方法:Init、Accumulate、Merge 和 Terminate。有關更多信息,請參見《SQL Books Online》(SQL 聯機叢書)中的“SQL CLR .NET User-Defined Aggregate Functions”(SQL CLR .NET 用戶定義的聚合函數)主題。注意; 顯示的對話框和菜單命令可能會與幫助中的描述不同,具體取決于您現用的設置或版本。若要更改設置,請在“工具”菜單上選擇“導入和導出設置”。有關更多信息,請參見 Visual Studio 設置。

創建 SQL Server 聚合創建 SQL Server 聚合打開一個現有的“SQL Server 項目”,或者創建一個新項目。有關更多信息,請參見 如何:創建 SQL Server 項目。

從“項目”菜單中選擇“添加新項”。

在 “添加新項”對話框 中選擇“聚合”。

輸入新聚合的“名稱”。

添加執行聚合時要運行的代碼。請參見下面的第一個示例。

注意; C++ 示例在編譯時必須使用 /clr:safe 編譯器選項。

將聚合部署到 SQL Server。有關更多信息,請參見 如何:將 SQL Server 項目項部署到 SQL Server 中。

通過在 SQL Server 上執行聚合對其進行調試。請參見下面的第二個示例。

示例此示例創建對元音計數的聚合。此聚合對字符串數據類型的列中的元音計數。聚合包含以下四個必需的可運行多個線程的方法:Init、Accumulate、Merge 和 Terminate。

Visual Basic 復制代碼Imports SystemImports System.Data.SqlTypesImports Microsoft.SqlServer.Server

<Serializable()> _<SqlUserDefinedAggregate(Format.Native)> _Public Structure CountVowels

' count only the vowels in the passed-in strings Private countOfVowels As SqlInt32

Public Sub Init() countOfVowels = 0 End Sub

Public Sub Accumulate(ByVal value As SqlString) Dim stringChar As String Dim indexChar As Int32

' for each character in the given parameter For indexChar = 0 To Len(value.ToString()) - 1

stringChar = value.ToString().Substring(indexChar, 1)

If stringChar.ToLower() Like '[aeiou]' Then

' it is a vowel, increment the count countOfVowels = countOfVowels + 1 End If Next End Sub

Public Sub Merge(ByVal value As CountVowels)

Accumulate(value.Terminate()) End Sub

Public Function Terminate() As SqlString

Return countOfVowels.ToString() End FunctionEnd StructureC# 復制代碼using System;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;

[Serializable][SqlUserDefinedAggregate(Format.Native)]public struct CountVowels{ // count only the vowels in the passed-in strings private SqlInt32 countOfVowels;

public void Init() { countOfVowels = 0; }

public void Accumulate(SqlString value) { // list of vowels to look for string vowels = 'aeiou'; // for each character in the given parameter for (int i=0; i < value.ToString().Length; i++) { // for each character in the vowels string for (int j=0; j < vowels.Length; j++) { // convert parameter character to lowercase and compare to vowel if (value.Value.Substring(i,1).ToLower() == vowels.Substring(j,1)) { // it is a vowel, increment the count countOfVowels+=1; } } } }

public void Merge(CountVowels value) { Accumulate(value.Terminate()); }

public SqlString Terminate() { return countOfVowels.ToString(); }}C++ 復制代碼#include 'stdafx.h'

#using <System.dll>#using <System.Data.dll>#using <System.Xml.dll>

using namespace System;using namespace System::Data;using namespace System::Data::Sql;using namespace System::Data::SqlTypes;using namespace Microsoft::SqlServer::Server;

// In order to debug your Aggregate, add the following to your debug.sql file://// SELECT LastName, COUNT(LastName) AS CountOfLastName, dbo.CountVowels(LastName) AS CountOfVowels// FROM Person.Contact// GROUP BY LastName// ORDER BY LastName//

[Serializable][SqlUserDefinedAggregate(Format::Native)]public value struct CountVowels{public: void Init() { countOfVowels = 0; }

void Accumulate(SqlString value) { // list of vowels to look for String ^vowels = 'aeiou';

// for each character in the given parameter for (int i=0; i < value.ToString()->Length; i++) { // for each character in the vowels string for (int j=0; j < vowels->Length; j++) { // convert parameter character to lowercase and compare to vowel if (value.Value->Substring(i, 1)->ToLower() == vowels->Substring(j, 1)) { // it is a vowel, increment the count countOfVowels+=1; break; } } } }

void Merge(CountVowels value) { Accumulate(value.Terminate()); }

SqlTypes::SqlString Terminate() { return countOfVowels.ToString(); }

private: // count only the vowels in the passed-in strings SqlInt32 countOfVowels;};

部署聚合后,在 SQL Server 上運行它以進行調試并驗證是否返回正確的數據。此查詢返回對 Contact 表中 LastNames 列的所有值的元音計數的結果集。

復制代碼SELECT LastName, COUNT(LastName) AS CountOfLastName, dbo.CountVowels(LastName) AS CountOfVowelsFROM Person.ContactGROUP BY LastNameORDER BY LastName

標簽: Sql Server 數據庫
主站蜘蛛池模板: 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 查分易-成绩发送平台官网 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | 北京西风东韵品牌与包装设计公司,创造视觉销售力! | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 深圳APP开发公司_软件APP定制开发/外包制作-红匣子科技 | 酸度计_PH计_特斯拉计-西安云仪 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 机床导轨_导轨板_滚轮导轨-上海旻佑精密机械有限公司 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 宁夏档案密集柜,智能密集柜,电动手摇密集柜-盛隆柜业宁夏档案密集柜厂家 | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 蓝牙音频分析仪-多功能-四通道-八通道音频分析仪-东莞市奥普新音频技术有限公司 | 非甲烷总烃分析仪|环控百科 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 广州市哲铭油墨涂料有限公司,水性漆生产研发基地 | CXB船用变压器-JCZ系列制动器-HH101船用铜质开关-上海永上船舶电器厂 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 电磁铁_小型推拉电磁铁_电磁阀厂家-深圳市宗泰电机有限公司 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 |