Tworzenie, zmienianie i usuwanie funkcje zdefiniowane przez użytkownika
The UserDefinedFunction object provides functionality that lets users programmatically manage user-defined functions in Microsoft SQL Server.Funkcje zdefiniowane przez użytkownika obsługują dane wejściowe i wyjściowe parametry i obsługiwać bezpośredniego odwołania do kolumn w tabela.
SQL Server wymaga zestawów ma być zarejestrowany w bazie danych przed te mogą być używane wewnątrz procedury przechowywane, zdefiniowane przez użytkownika funkcji, wyzwalaczy i typy danych zdefiniowane przez użytkownika.Obiekty SMO obsługuje tę funkcję z SqlAssembly obiekt.
The UserDefinedFunction object references the .NET wirtualny plik dziennika with the AssemblyName(), ClassName(), and MethodName() properties.
Gdy UserDefinedFunction obiekt odwołuje się do wirtualny plik dziennika .NET, należy zarejestrować wirtualny plik dziennika tworząc SqlAssembly obiekt i dodawania go do SqlAssemblyCollection obiekt, który należy do Database obiekt.
Przykład
Aby używać dostarczonych przykładów kodu źródłowego, należy wybrać środowisko, szablon oraz język programowania, które będą używane do tworzenia aplikacji.Aby uzyskać więcej informacji zobacz Jak Tworzenie obiektów SMO projektu Visual Basic w programie Visual Studio .NET lub Jak Tworzenie projektu programu Visual C# obiekty SMO w programie Visual Studio .NET.
Tworzenie zdefiniowane przez użytkownika funkcja wartość skalarna w języku Visual Basic
W tym przykładzie kodu pokazano, jak tworzyć i usuwać wartość skalarna funkcja zdefiniowanej przez użytkownika, zawierający dane wejściowe DateTime Parametr obiektu i całkowitą zwracają typ Visual Basic. funkcja zdefiniowanej przez użytkownika jest tworzony na AdventureWorks Baza danych. W przykładzie tworzy funkcja zdefiniowaną przez użytkownika, ISOweek, które przyjmuje argument data i oblicza ISO numer tygodnia.Dla tej funkcja do obliczania poprawnie DATEFIRST opcję Baza danych musi być zestaw 1 przed wywołania funkcja.
Tworzenie zdefiniowane przez użytkownika funkcja wartość skalarna w środowisku Visual C#
W tym przykładzie kodu pokazano, jak tworzyć i usuwać wartość skalarna funkcja zdefiniowanej przez użytkownika, zawierający dane wejściowe DateTime Parametr obiektu i całkowitą zwracają typ Visual C#. funkcja zdefiniowanej przez użytkownika jest tworzony na AdventureWorks Baza danych. W przykładzie Tworzenie funkcja zdefiniowanej przez użytkownika.ISOweek.This function takes a date argument and calculates the ISO week number.Dla tej funkcja do obliczania poprawnie, baza danych DATEFIRST opcja musi być zestaw do 1 Zanim wywołania funkcja.
//Connect to the local, default instance of SQL Server.
{
Server srv = default(Server);
srv = new Server();
//Reference the AdventureWorks database.
Database db = default(Database);
db = srv.Databases("AdventureWorks");
//Define a UserDefinedFunction object variable by supplying the parent database and the name arguments in the constructor.
UserDefinedFunction udf = default(UserDefinedFunction);
udf = new UserDefinedFunction(db, "IsOWeek");
//Set the TextMode property to false and then set the other properties.
udf.TextMode = false;
udf.DataType = DataType.Int;
udf.ExecutionContext = ExecutionContext.Caller;
udf.FunctionType = UserDefinedFunctionType.Scalar;
udf.ImplementationType = ImplementationType.TransactSql;
//Add a parameter.
UserDefinedFunctionParameter par = default(UserDefinedFunctionParameter);
par = new UserDefinedFunctionParameter(udf, "@DATE", DataType.DateTime);
udf.Parameters.Add(par);
//Set the TextBody property to define the user-defined function.
udf.TextBody = "BEGIN DECLARE @ISOweek int SET @ISOweek= DATEPART(wk,@DATE)+1 -DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104') IF (@ISOweek=0) SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1 AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1 IF ((DATEPART(mm,@DATE)=12) AND ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28)) SET @ISOweek=1 RETURN(@ISOweek) END;";
//Create the user-defined function on the instance of SQL Server.
udf.Create();
//Remove the user-defined function.
udf.Drop();
}
See Also
Reference
UserDefinedFunction