首先普及一下什么是表值函数,我是说个人理解啊,就是传进去一个参数或者不传参数,返回一个列表的函数,这个是通俗一点的说法,官方解释Sql server 的表值函数是返回一个Table类型,table类型相当与一张存储在内存中的一张虚拟表 下面说做法。

1,首先新建一个 C# CLR 数据库项目

2,在里面新建用户自定义函数文件,其实就是一个类

这里可以直接右键生成和部署,这里要注意了,选择 net的版本,注意C# 参数的类型是否和数据库类型匹配。

因为是表值函数,所以首先要声明字段,这里注意,我是把Participle 类声明在 UserDefinedFunctions 类当中. 声明完了 就要返回    接着是自己的业务逻辑

下面是业务类的简单写法,

[SqlFunction(DataAccess = DataAccessKind.Read, FillRowMethodName = "ParticipleFunt_FillRow", TableDefinition = "ContentId nvarchar(400), Content nvarchar(400),Sort int")]
public static IEnumerable ParticipleFunt(SqlString modified)
{
ArrayList resultCollection = new ArrayList();
string [] strmodified = modified.ToString().Split('\r');
for (int i = 0; i < strmodified.Length; i++)
{
resultCollection.Add(new Participle((i+1).ToString(),strmodified[i], i+1));
}
return resultCollection;
}

解释一下上面的特性 (DataAccessKind.Read 描述用户定义的方法或函数所使用的用户数据访问类型),(FillRowMethodName = "ParticipleFunt_FillRow", 指明返回函数)(TableDefinition = "ContentId nvarchar(400), Content nvarchar(400),Sort int“ 表示返回的列,这里一定要注意哦,c# 的字段类型一定要和 sqlserver 的字段类型匹配,要不程序一直报错,建议打开调试里面的输出,能看到时时编译的错误)

做完上面的就可以右键生成和部署了, 生成很简单,部署也很简单,都是点击项目,然后在右键菜单里面。

最后再说几句,因为是表值函数,所以我们自定义的时候返回表结构用的是 IEnumerable

最后测试语句用的是 select * from dbo.ParticipleFunt( 参数/null);

以上是C#编写表值函数的所有做法。

C# 自定义sqlserver表值函数相关推荐

  1. sqlserver 表值函数

    一.单语句表值函数 ALTER function [dbo].[uf_get_jxc_da_sum](@dt char(8),@dt2 char(8)) RETURNS table as return ...

  2. [SqlServer]数据库中自定义拆分字符串函数Split()

     经常我们要用到批量操作时都会用到字符串的拆分,郁闷的是SQL Server中却没有自带Split函数,所以我们只能自己动手来解决一下.为了减少和数据库的通讯次数,我们都会利用这种方法来实现批量操作. ...

  3. [原创]SQL 表值函数:获取从今天计算起往前自定义天数

    PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好. 在我开发过程中,遇到一个统计需求,结果是要求返回从当天起往回推算出自定义输入的天数 为此我写了一个表值函数 ...

  4. 在sqlserver中创建表值函数

    1.创建表值函数SplitStr(用逗号分割字符串) ALTER FUNCTION [dbo].[SplitStr] (@RowData nvarchar(4000), @SplitOn nvarch ...

  5. sqlserver中的表值函数和标量值函数

    顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型,表是单个 SELECT 语句的结果集. 以下示例: CREATE FUNCTION ...

  6. SQL Server自定义字符串分割函数——Split

    我相信大部分人都碰到过,处理数据的时候,字段的值是以 ',' (逗号)分隔的形式,所以我也不能避免. 然后我才知道,sql 是没有类似于 C# 和 Javascript 这种分割字符串的方法.( Sp ...

  7. mysql 实现表值函数,SQL SERVER 的 CLR表值函数

    一.使用CLR表值 函数 的背景 在SQL SERVER里面,直接读取远程 数据库 的表,似乎会占用大量的内存,出现类似错误: 链接服务器 192.168.0.1 的 OLE DB 访问接口 SQLN ...

  8. SQL server内嵌表值函数与多语句表值函数

    内联表值函数 create function 函数名(@变量 as 类型) returns table as return ( 结果集[select查询语句] ) go select 列名 from ...

  9. 多语句表值函数与内联表值函数区别?

    有几个例子要展示,以防万一: 内联表值 CREATE FUNCTION MyNS.GetUnshippedOrders() RETURNS TABLE AS RETURN SELECT a.SaleI ...

最新文章

  1. 中国传媒大学计算机系湖北分数线,中国传媒大学录取分数线2019(在各省市录取数据)...
  2. NBT:用16S及18S rRNA全长进行微生物多样性研究
  3. 抛硬币直到若干次(k次)连续正面向上的概率
  4. 粉丝该从哪里来?搞定这8种吸粉渠道
  5. iis 防火墙防止恶意ip攻击
  6. mysql数据库操作宠物表_mysql数据库之表的操作
  7. ​Cell:粟硕/施莽团队利用宏转录组揭示“野味”动物携带和人类疾病密切相关的多种病毒...
  8. 正确的python变量名_在Python,如何将变量名作为字符串?_others_酷徒编程知识库...
  9. 《南溪的目标检测学习笔记》——性能优化的学习笔记
  10. 操作系统-存储器管理
  11. android通过手机热点通信
  12. 文字处理技术:空格压缩
  13. 端口映射内网穿透——网络通
  14. 计算机编程方面的电子书大汇总 阿里云盘
  15. (附源码)ssm教材管理系统 毕业设计 011229
  16. zblog php 首页经常被篡改,浏览器首页经常被篡改,这样设置,自己也改不掉!...
  17. 应用在夜灯领域的环境光测距感器芯片
  18. Redis核心技术笔记——Redis主从、主从从、切片集群
  19. c语言源代码下载TGAM,2018年江西理工大学C语言程序设计竞赛(初级组)一
  20. 计算机网络课设路由器,计算机网络课程设计---小型校园网络设计.doc

热门文章

  1. OpenSSL之PKey的EVP封装
  2. 基于OpenCV全景图像拼接
  3. android悬浮控件-仿360手机助手应用详情页
  4. html导出表格为csv,可将HTML表格导出为Excel|csv|txt文件的jQuery插件
  5. 令人厌恶的错误MSB3721,以及win10,VS2019,YOLO V4 环境搭建
  6. Emacs显示函数列表imenu-list
  7. 解决:scripts/kconfig/zconf.tab.c:199:24: fatal error: zconf.hash.c: No such file or directory
  8. Android音频系统扫盲
  9. interface_cast做什么的?
  10. Android odex反编译为dex