Создание пользовательской функции CLR в .Net - PullRequest
0 голосов
/ 08 ноября 2011

Я хочу создать функцию 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

но вышеприведенная функция создания выдавала ошибку, говоря:

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

Я не понимаю, почему class1 не распознается, так как я также сделал его публичным. Пожалуйста, помогите мне.

1 Ответ

4 голосов
/ 08 ноября 2011

Вам не хватает пространства имен, в котором находится ваш класс (ClassLibrary1).Таким образом, правильный оператор создания функции:

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