网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

系统创建的用户定义函数

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

--
--9.4.1节示例
--

//系统创建的用户定义函数
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
//创建用户定义函数所在的类,该类的类名是UserDefinedFunctions
public partial class UserDefinedFunctions
{
//通过Attribute来标明静态方法HtmlFilter可以作为SQL中的用户定义函数
    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlString HtmlFilter()//函数名
    {
        //在此输入你的代码
        return new SqlString("Hello"); //返回结果
    }
};

//修改后的HtmlFilter()函数
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;
//创建用户定义函数所在的类,该类的类名是UserDefinedFunctions
public partial class UserDefinedFunctions
{
//通过Attribute来标明静态方法HtmlFilter可以作为SQL中的用户定义函数
    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlString HtmlFilter(SqlString html) //传送字符串参数html
    {
        if (html.IsNull) //如果传入字符串为空,则返回空
        {
            return null;
        }
//返回经过处理的字符串
        return new SqlString(Regex.Replace(html.Value, "<[^>]+>", ""));
    }
}

--
--9.4.2节示例
--

--创建CLR标量值函数
CREATE FUNCTION [dbo].[HtmlFilter] –SQL中的函数名
(
@html [nvarchar](1000) --CLR标量值函数的参数
)
RETURNS [nvarchar](200)  --CLR标量值函数的返回值
AS --以下定义函数对应的程序集中的位置
EXTERNAL NAME [TestSQLAssembly].[UserDefinedFunctions].[HtmlFilter]

--使用CLR标量值函数
select dbo.HtmlFilter('<a href="about.aspx">About Us</a>') --调用CLR标量值函数
--返回无HTML标签的结果:
About Us

--
--9.4.3节示例
--

//StringSplit()函数
using System;
using System.Data;
using System.Collections;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
//创建用户定义函数所在的类,该类的类名是UserDefinedFunctions
public partial class UserDefinedFunctions
{
//使用Attribute指定StringSplit函数是CLR表值函数
//FillSplitTable是将.NET中的对象转换为表列的函数名
    [Microsoft.SqlServer.Server.SqlFunction(FillRowMethodName="FillSplitTable")]
    public static IEnumerable  StringSplit(SqlString str,SqlString split)//定义函数
    {
        if (str.IsNull || split.IsNull) //如果任何一个参数为空,则返回空表
        {
            return "".ToCharArray();
        }
        return str.Value.Split(split.Value.ToCharArray());//两个参数都不为空,返回字符串分割结果
}
//这里定义了将.NET中的对象转换为表列的静态方法
    public static void FillSplitTable(object obj, ref SqlString F1)//F1就是返回表的列名
    {
        string s = obj.ToString();//传入的对象
        F1 =new SqlString(s);  //将字符串s作为F1列输出
    }
}

--
--9.4.4节示例
--

--更新程序集
ALTER ASSEMBLY [TestSQLAssembly] --更新程序集
FROM 'D:\Lib\SqlServerProject1.dll'
WITH PERMISSION_SET = SAFE

--创建StringSplit表值函数
CREATE FUNCTION StringSplit --创建CLR表值函数
(
 @str nvarchar(4000),
 @split nvarchar(10)
)
RETURNS TABLE([F1] nvarchar(4000)) 返回一个表,表中只有一个列F1
AS --以下定义函数对应的CLR中的位置
EXTERNAL NAME [TestSQLAssembly].[UserDefinedFunctions].StringSplit

--使用CLR表值函数
SELECT *
FROM dbo.StringSplit('a,bc,def,g',',')  --使用逗号分割字符串

 

  • 下一篇资讯: 启用CLR集成
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师