Удаление определенных пользователем функций

Определяемые пользователем функции в SQL Server 2012 можно удалить с помощью среды Среда SQL Server Management Studio или Transact-SQL

В этом разделе

  • Перед началом работы выполните следующие действия.

    Ограничения

    Безопасность

  • Для удаления определяемой пользователем функции используются

    Среда SQL Server Management Studio

    Transact-SQL

Перед началом

Ограничения

  • Удалить функцию не удастся, если в базе данных имеются функции Transact-SQL или представления, которые ссылаются на эту функцию и были созданы с помощью SCHEMABINDING, или при наличии вычисляемых столбцов, ограничений CHECK либо DEFAULT, которые ссылаются на эту функцию.

  • Удалить функцию не удастся, если имеются вычисляемые столбцы, которые ссылаются на эту функцию и были индексированы.

Безопасность

Разрешения

Необходимо разрешение ALTER на схему, которой принадлежит функция, или разрешение CONTROL на функцию.

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование среды SQL Server Management Studio

Удаление определяемой пользователем функции

  1. Щелкните значок плюса рядом с базой данных, содержащей функцию, которую надо изменить.

  2. Щелкните значок плюса рядом с папкой Программирование.

  3. Щелкните значок плюса рядом с папкой, содержащей функцию, которую надо изменить.

    • Функция с табличным значением

    • Скалярная функция

    • Агрегатная функция

  4. Щелкните правой кнопкой мыши функцию, которую нужно удалить, и выберите пункт Удалить.

  5. В диалоговом окне Удаление объекта нажмите кнопку ОК.

    Важное примечаниеВажно!

    Щелкните Показать зависимости в диалоговом окне Удаление объекта, чтобы открыть диалоговое окно function_name Зависимости. При этом будут отображены все объекты, зависящие от функции, и все объекты, от которых зависит функция.

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование Transact-SQL

Удаление определяемой пользователем функции

  1. В обозревателе объектов установите соединение с экземпляром компонента Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    -- creates function called “Sales.ufn_SalesByStore”
    USE AdventureWorks2012;
    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
    
    USE AdventureWorks2012;
    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
    

Дополнительные сведения см. в разделе DROP FUNCTION (Transact-SQL).

Значок стрелки, используемый со ссылкой «В начало»[Top]