Udostępnij za pomocą


Usuwanie funkcji zdefiniowanych przez użytkownika

Dotyczy do:SQL ServerAzure SQL DatabaseBaza danych SQL w Microsoft Fabric

Można usunąć (drop) funkcje zdefiniowane przez użytkownika w SQL Server, używając SQL Server Management Studio lub języka Transact-SQL.

Ograniczenia i ograniczenia

  • Nie będzie można usunąć funkcji, jeśli w bazie danych istnieją Transact-SQL funkcje lub widoki odwołujące się do tej funkcji i zostały utworzone przy użyciu funkcji SCHEMABINDING lub jeśli istnieją obliczone kolumny, ograniczenia CHECK lub ograniczenia DOMYŚLNE odwołujące się do funkcji.

  • Nie będzie można usunąć funkcji, jeśli istnieją obliczone kolumny odwołujące się do tej funkcji i zostały zindeksowane.

Uprawnienia

Wymaga uprawnienia ALTER do schematu, do którego należy funkcja, lub uprawnienia CONTROL w funkcji.

Korzystanie z programu SQL Server Management Studio

  1. Wybierz znak plus obok bazy danych zawierającej funkcję, którą chcesz zmodyfikować.

  2. Wybierz ikonę plus obok folderu Programmability.

  3. Wybierz znak plus obok folderu zawierającego funkcję, którą chcesz zmodyfikować:

    • Funkcja wartości tabeli
    • Funkcja skalarna
    • Funkcja agregacji
  4. Kliknij prawym przyciskiem myszy funkcję, którą chcesz usunąć, a następnie wybierz pozycję Usuń.

  5. W oknie dialogowym Usuń obiekt wybierz pozycję OK.

    Wybierz Pokaż zależności w oknie dialogowym Usuń obiekt, aby otworzyć okno dialogowe function_nameZależności. Spowoduje to wyświetlenie wszystkich obiektów, które zależą od funkcji i wszystkich obiektów, od których zależy funkcja.

Użyj Transact-SQL

  1. W Eksploratorze obiektów , nawiąż połączenie z wystąpieniem silnika bazy danych.

  2. Na pasku Standardowa wybierz pozycję Nowe zapytanie.

  3. Skopiuj poniższy przykład i wklej go w oknie zapytania, a następnie wybierz pozycję Wykonaj.

    Poniższy przykładowy kod tworzy funkcję zdefiniowaną przez użytkownika:

    -- creates function called "Sales.ufn_SalesByStore"
    USE AdventureWorks2022;
    GO
    CREATE FUNCTION Sales.ufn_SalesByStore (@storeid int)
    RETURNS TABLE
    AS
    RETURN
    (
        SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'Total'
        FROM Production.Product AS P
        JOIN Sales.SalesOrderDetail AS SD ON SD.ProductID = P.ProductID
        JOIN Sales.SalesOrderHeader AS SH ON SH.SalesOrderID = SD.SalesOrderID
        JOIN Sales.Customer AS C ON SH.CustomerID = C.CustomerID
        WHERE C.StoreID = @storeid
        GROUP BY P.ProductID, P.Name
    );
    GO
    

    Poniższy przykładowy kod usuwa funkcję zdefiniowaną przez użytkownika utworzoną w poprzednim przykładzie.

    USE AdventureWorks2022;
    GO
    -- determines if function exists in database
    IF OBJECT_ID (N'Sales.fn_SalesByStore', N'IF') IS NOT NULL
    -- deletes function
        DROP FUNCTION Sales.fn_SalesByStore;
    GO
    

Zobacz też