使用CLR函数在Visual Studio 2019中将Hierarchyid转换为字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用CLR函数在Visual Studio 2019中将Hierarchyid转换为字符串相关的知识,希望对你有一定的参考价值。
请告诉我。我尝试为SQL Server写一个CLR函数。我使用Microsoft文档编写下面的函数Ref-LINK使用CLR查找祖先涉及层次结构中两个节点的常见操作是查找最低的公共祖先。这可以用Transact-SQL或CLR编写,因为hierarchyid类型都可用。建议使用CLR,因为性能会更快。
使用下面的CLR代码列出祖先并找到最低的公共祖先:
using Microsoft.SqlServer.Server;
using Microsoft.SqlServer.Types;
using System;
using System.Collections;
using System.Text;
public partial class HierarchyId_Operations
[SqlFunction(FillRowMethodName = "FillRow_ListAncestors")]
public static IEnumerable ListAncestors(SqlHierarchyId h)
while (!h.IsNull)
yield return (h);
h = h.GetAncestor(1);
public static void FillRow_ListAncestors(
Object obj,
out SqlHierarchyId ancestor
)
ancestor = (SqlHierarchyId)obj;
public static HierarchyId CommonAncestor(
SqlHierarchyId h1,
HierarchyId h2
)
while (!h1.IsDescendantOf(h2))
h1 = h1.GetAncestor(1);
return h1;
我尝试使用Visual Studio解决方案,但无法真正工作。然后使用互联网搜索并找到Nugget,但是我的Nugget已禁用。
。NET代码中的名称HierarchyId
在文档中似乎是type-o。 SQLCLR中只有SqlHierarchyId
。实际上,甚至在与该文档页面相关的3个已关闭问题之一中提到了此问题(在该页面的底部,单击“已关闭”选项卡):
由“ FYfrog”于2019-06-27开张。
以上是关于使用CLR函数在Visual Studio 2019中将Hierarchyid转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2019 缺少 SQL CLR VB
在 Visual Studio 2012 中编译启用 CLR 的 C++ 项目时出现 C2248 错误
.NET Framework、CLR 和 Visual Studio 版本号如何相互关联?
visual studio2017中C++节点中为啥没有CLR项,是要添加哪个部件吗?