深入解析.Net CLR函数使用举例

开发 后端
在Microsoft Visual Studio 中部署 SQL Server 项目将在为该项目指定的数据库中注册程序集。部署项目时,还会在数据库中为使用 SqlFunction 属性注释的所有方法创建.Net CLR函数。

本文介绍.Net CLR,其中讲解了在SQL Server 中创建.Net CLR函数的几个步骤,还有具体的实例等等。

可以在SQL Server 实例中创建可在 Microsoft .NET Framework 公共语言运行时 (CLR) 中创建的程序集中进行编程的数据库对象。可以充分利用公共语言运行时所提供的丰富的编程模式的数据库对象包括聚合函数、函数、存储过程、触发器以及类型。

在SQL Server 中创建.Net CLR函数分为下列几个步骤:

使用 .NET Framework 支持的语言将函数定义为类的静态方法。然后,使用适当的语言编译器编译该类,在 .NET Framework 中生成程序集。使用 CREATE ASSEMBLY 语句在 SQL Server 中注册程序集。通过使用 CREATE FUNCTION 语句创建引用注册程序集的函数。

注意:

在Microsoft Visual Studio 中部署 SQL Server 项目将在为该项目指定的数据库中注册程序集。部署项目时,还会在数据库中为使用 SqlFunction 属性注释的所有方法创建.Net CLR函数。

注意:

默认情况下,关闭 SQL Server 执行.Net CLR代码的功能。您可以创建、更改和删除引用托管代码模块的数据库对象,但是除非通过使用 sp_configure (Transact-SQL) 启用了 clr enabled 选项,否则这些引用将不会在 SQL Server 中执行。

访问外部资源

可以使用.Net CLR函数访问外部资源,例如文件、网络资源、Web 服务及其他数据库(包括 SQL Server 远程实例)。这可以通过使用 .NET Framework 中的各种类(例如 System.IO、System.WebServices 及 System.Sql 等)来实现。

至少应将包含此类函数的程序集配置为设置了 EXTERNAL_ACCESS 权限,才能实现此目的。可以使用 SQL 客户端托管访问接口访问 SQL Server 远程实例。但在.Net CLR函数中不支持与发起服务器的环回连接。

示例如下:

.Net CLR第一步:

.Net CLR第一步
.Net CLR第一步

.Net CLR第二步:

  1. public class Class1  
  2. {  
  3. public static string MySplit(int filedIndex, string filedName)  
  4. {  
  5. //filedIndex从1开始  
  6. try  
  7. {  
  8. if (filedIndex == null || filedIndex <= 0 || filedName == null || 
  9. filedName == "")  
  10. {  
  11. return "";  
  12. }  
  13. else  
  14. {  
  15. return filedName.Split('|')[filedIndex - 1].Trim();  
  16. }  
  17.         }  
  18. catch  
  19. {  
  20. return "";  
  21. }  
  22. }  
  23. }  
  24. //得到程序集 ClassLibrary1.dll 

.Net CLR第三步:

  1. CREATE ASSEMBLY Class1AUTHORIZATION [dbo]FROM 
  2. 'C:\ClassLibrary1.dll'WITH PERMISSION_SET = SAFE  

.Net CLR第四步:

  1. CREATE FUNCTION dbo.MySplit(@filedIndex AS INT,@filedName AS
  2.  NVARCHAR(255))RETURNS NVARCHAR(255)ASEXTERNAL NAME Class1.Class1.MySplit  

.Net CLR第五步(测试):

  1. select dbo.MySplit(2,name) from mytesttable 

.Net CLR测试通过!

【编辑推荐】

  1. 浅析C#数组操作方法
  2. C#数组操作全面分析
  3. C#数组和串操作经验总结
  4. 为你解疑:CLR是什么?
  5. 分析与对比CLR Via C#静态构造函数的性能
责任编辑:阡陌 来源: 51CTO
相关推荐

2009-03-17 16:29:53

SQL ServerCLR.NET Framew

2009-10-20 09:28:18

VB.NET Prin

2010-07-13 10:13:35

Perl内部函数

2009-08-24 11:36:27

CLR加载过程

2009-09-18 13:05:59

.NET CLR

2009-10-13 17:08:10

CLR VB.NET

2009-10-22 16:08:52

.NET CLR是什么

2009-10-14 14:19:00

VB.NET创建表示层

2009-11-02 14:55:52

VB.NET Obje

2009-10-22 17:39:34

CLR内存管理

2009-09-18 11:29:23

.NET CLR

2009-10-19 14:25:16

静态构造函数

2009-09-18 09:02:45

CLR Via C#

2009-10-29 10:57:28

ADO.NET Dat

2009-10-12 16:51:28

VB.NET使用Ora

2024-04-07 09:04:18

Parallel 类编程工具.NET

2010-07-21 10:18:41

Perl map函数

2009-09-18 09:35:36

C# CLR

2009-10-22 11:25:08

CLR函数压缩

2009-04-14 09:35:33

.NETCLR术语
点赞
收藏

51CTO技术栈公众号