#.net #class-library #sqlclr #sql-function
#.net #class-library #sqlclr #sql-функция
Вопрос:
я хочу создать функцию 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 Sitestvt.stage.asentechdev1.comClassLibrary1.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 не распознается, поскольку я также сделал его общедоступным.
Пожалуйста, кто-нибудь мне в этом поможет.
Ответ №1:
Вам не хватает пространства имен, в котором находится ваш класс (ClassLibrary1). Таким образом, правильный оператор create function является:
CREATE FUNCTION SampleFunc
(
@value nvarchar(max)
)
RETURNS nvarchar(max) with execute as caller
AS
External Name [ASSEM].[ClassLibrary1.Class1].[GetPassword]
GO