SQL Server CLR函数

8
在编写一个 CLR 函数时,可以使用命名空间吗?
namespace SomeName1.SomeName2
{
   public static class SomeClass
   {
       [SqlFunction]
       public static SqlString SomeMethod(SqlString input)
       {
          // ....
       }
   }
}

如果是这样的话,我们该如何从 SqlServer 调用此函数呢?换句话说,我们该如何在 SQL Server 中使用带有命名空间的 CLR 函数呢?
1个回答

7
是的,你完全可以:
CREATE FUNCTION SomeMethod(@input VarChar(200))
RETURNS VarChar(200) WITH EXECUTE AS CALLER AS

EXTERNAL NAME [SomeName1.SomeName2].[SomeName1.SomeName2.SomeClass.SomeMethod]

在第一部分中,[SomeName1.SomeName2] 表示 SQL Server 中的程序集名称,剩余部分 ([SomeName1.SomeName2.SomeClass.SomeMethod]) 是完全限定的函数名,包括命名空间。

顺便提一下,如果你使用 Visual Studio 进行部署,它会自动处理很多这样的问题。


2
我刚刚弄清楚了。我正要回答那个问题。[AssemblyName][Namespace.Class].[Method]。谢谢! - Debjit
1
实际上应该是[AssemlyName],然后剩下的就是[SomeName1.SomeName2.SomeClass].[SomeMethod]。 - Debjit
正确。我假设您的程序集名称遵循在此定义的命名空间的名称。 - Yuck
@Debjit - 只是一个错别字更正,应该是[AssemblyName].[Namespace.Class].[Method]。谢谢! - Colin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接