c# clr sql函数 返回多个值

班长老六哥 2016-04-07 02:02:29
以下例子,可以返回一个值,我想实现返回14个值,都是real类型,也就是一个表,
然后sqlserver调用这14个值插入一个表里面,
因为这十四个值获取很麻烦所以用clr,求高手指点代码如何修改。
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static string StrCount(string str)
{
// 返回字符串的长度
return str.Length.ToString();
}
};

貌似应该发到c#区,也涉及到sql,如果我发错了,麻烦版主帮我转移,谢谢.
...全文
165 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishparadise 2016-04-08
  • 打赏
  • 举报
回复
来膜拜下。 这个回贴的验证码太牛逼,输5次没输对。
唐诗三百首 2016-04-08
  • 打赏
  • 举报
回复
如下Demo, 实现将输入字符串的逐个字符分解为行(带序号),CLR函数返回表.供参考, 1.CLR代码,

[SqlFunction(DataAccess = DataAccessKind.Read, FillRowMethodName = "FillList", TableDefinition = "num int, letter nvarchar(1)")]
    public static IEnumerable getLetters(string sInput)
    {
        List<Letters> returnTable = new List<Letters>();

        int i;
        for (i = 0; i <= sInput.Length - 1; i++)
        {
            returnTable.Add(new Letters(i+1, sInput.Substring(i,1)));
        }

        return returnTable;
    }

    public static void FillList(object Group, out SqlInt32 n, out SqlString s)
    {
        Letters rm = (Letters)Group;
        n = rm.num;
        s = rm.letter;
    }

    private class Letters
    {
        public SqlInt32 num { get; set; }
        public SqlString letter { get; set; }

        public Letters(SqlInt32 n, SqlString s)
        {
            this.num = n;
            this.letter = s;
        }
    }

// 编译,导出DLL(略)
2.TSQL代码

-- 导入DLL(略)

-- 建函数
create function dbo.getLetters(@str nvarchar(max))
returns table(num int, letter nvarchar(1))
as 
EXTERNAL NAME cxcai.UserDefinedFunctions.getLetters


-- 测试
select * from dbo.getLetters(N'Hello world')

/*
num         letter
----------- ------
1           H
2           e
3           l
4           l
5           o
6            
7           w
8           o
9           r
10          l
11          d

(11 row(s) affected)
*/

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧