C# 自定义sqlserver表值函数

首先普及一下什么是表值函数,我是说个人理解啊,就是传进去一个参数或者不传参数,返回一个列表的函数,这个是通俗一点的说法,官方解释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#编写表值函数的所有做法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值