0

CLR 関数を作成したい。通常のクラス ライブラリ ファイルを作成し、以下のようにコーディングしました。いくつかのクラスが見つからないため、SqlServerProject を使用したくありません。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Types;

    namespace ClassLibrary1
    {
        public partial class Class1
        {
            [Microsoft.SqlServer.Server.SqlFunction]
            public static SqlString GetPassword(SqlString Value)
            {
                return Value;
            }
        }
    }

私はコードをコンパイルし、このようにsqlserverからアセンブリを作成しました

CREATE ASSEMBLY ASSEM
authorization dbo
FROM 'E:\NBM Sites\tvt.stage.asentechdev1.com\ClassLibrary1.dll' WITH PERMISSION_SET = SAFE;

そして、以下のような関数を作成しました

CREATE FUNCTION SampleFunc
(   
    @value nvarchar(max)
)
RETURNS nvarchar(max) with execute as caller
AS
    External Name ASSEM.Class1.GetPassword
GO

しかし、上記の create 関数はエラーをスローしました。

Could not find Type 'Class1' in assembly 'ClassLibrary1'.

なぜclass1が認識されないのか、私も公開したのでわかりません。誰か助けてください。

4

1 に答える 1

4

クラスが含まれている名前空間 (ClassLibrary1) がありません。したがって、正しい create function ステートメントは次のとおりです。

CREATE FUNCTION SampleFunc
(   
  @value nvarchar(max)
)
RETURNS nvarchar(max) with execute as caller
AS
  External Name [ASSEM].[ClassLibrary1.Class1].[GetPassword]
GO
于 2011-11-08T19:39:58.977 に答える