当前位置: 首页 > news >正文

Clr静态数据Table-Valued函数

前两天Insus.NET实现一个功能《在数据库中提供只读数据》http://www.cnblogs.com/insus/p/4384411.html ,在数据库中为程序提供静态数据。
它是在Clr存储过程实现。现想使用另外一种方式来解决。如果提供这些静态数需要与其它数据结合Join等,这样象前面的存储过程,有些不太好操作。那我们可以把它实现在table-valued function。

创建一个model:


再创建一个Entity:


打开SqlFunction类,编写table-valued函数:


可复制代码:

 [SqlFunction(DataAccess = DataAccessKind.None,
                FillRowMethodName = "FillRow_1A",
                TableDefinition = "Id TINYINT,Name NVARCHAR(30), [key] NVARCHAR(30)")
   ]
    public static IEnumerable Tvf_SiteInfor()
    {
        FruitEntity fe = new FruitEntity();
        return fe.GetData();       
    }

    private static void FillRow_1A(object source, out SqlByte id, out SqlChars name, out SqlChars key)
    {
        Si obj = (Si)source;
        id = new SqlByte(obj.Id);
        name = new SqlChars(obj.Name);
        key = new SqlChars(obj.Key);
    }
View Code


部署至SQL:



可复制代码:

IF EXISTS (SELECT * FROM sys.objects WHERE name = 'Tvf_SiteInfor')
    DROP FUNCTION Tvf_SiteInfor;
GO

IF EXISTS (SELECT * FROM sys.assemblies WHERE name = 'FruitClr')
    DROP ASSEMBLY FruitClr;
GO

CREATE ASSEMBLY FruitClr
FROM 'E:\FruitClr.dll' 
WITH PERMISSION_SET = SAFE;
GO

CREATE FUNCTION Tvf_SiteInfor() 
RETURNS TABLE(
    Id TINYINT,
    [Name] NVARCHAR(30),
    [key] NVARCHAR(50)
) 
AS EXTERNAL NAME [FruitClr].UserDefinedFunctions.Tvf_SiteInfor; 
GO
View Code


执行结果:

 

相关文章:

  • Python判断字符串编码以及编码的转换
  • 转:一个基于互联网医疗的创业公司,三年是一个收获
  • LoadRunner的Socket脚本关联小技巧
  • linux 驱动cc1101
  • (Repost) Getting Genode with TrustZone on the i.MX
  • [数分提高]2014-2015-2第5教学周第1次课
  • 【每天进步一点】毒药和老鼠的研究
  • linux下安装Python-2.7.9
  • 一条简单的sql在11g和12c中的不同
  • 关于mongodb在mac下的手动安装,非homwbrew安装(小白请进)
  • EcShop二次开发学习方法
  • 国庆后的特训
  • 梦游记-梦中游记
  • PHP-内核学习(一、变量)
  • 【cs229-Lecture18】线性二次型调节控制
  • Babel配置的不完全指南
  • Linux下的乱码问题
  • Logstash 参考指南(目录)
  • node入门
  • React as a UI Runtime(五、列表)
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • SpingCloudBus整合RabbitMQ
  • SpriteKit 技巧之添加背景图片
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Vue学习第二天
  • Vue组件定义
  • Windows Containers 大冒险: 容器网络
  • Yeoman_Bower_Grunt
  • 闭包,sync使用细节
  • 机器学习学习笔记一
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 数据科学 第 3 章 11 字符串处理
  • 微信开放平台全网发布【失败】的几点排查方法
  • 移动端唤起键盘时取消position:fixed定位
  • 字符串匹配基础上
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​Python 3 新特性:类型注解
  • # Apache SeaTunnel 究竟是什么?
  • #LLM入门|Prompt#3.3_存储_Memory
  • #控制台大学课堂点名问题_课堂随机点名
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2)MFC+openGL单文档框架glFrame
  • (4) PIVOT 和 UPIVOT 的使用
  • (ZT)薛涌:谈贫说富
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (十六)Flask之蓝图
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • .net 生成二级域名
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @RestController注解的使用
  • [20150629]简单的加密连接.txt