Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
SQL база данных в Microsoft Fabric
Вы можете удалить пользовательские функции в SQL Server с помощью SQL Server Management Studio или Transact-SQL.
ограничения и запреты
Вы не сможете удалить функцию, если в базе данных есть функции Transact-SQL или представления, ссылающиеся на эту функцию и созданные с помощью SCHEMABINDING, или если существуют вычисляемые столбцы, ограничения CHECK или DEFAULT, ссылающиеся на функцию.
Вы не сможете удалить функцию, если есть вычисляемые столбцы, которые ссылаются на эту функцию и которые были проиндексированы.
Разрешения
Необходимо разрешение ALTER на схему, которой принадлежит функция, или разрешение CONTROL на функцию.
Использование SQL Server Management Studio
Выберите знак плюса рядом с базой данных, содержащей функцию, которую вы хотите изменить.
Выберите знак плюса рядом с папкой Programmability .
Выберите знак плюса рядом с папкой, содержащей функцию, которую вы хотите изменить:
- табличная функция
- Функция, возвращающая скалярные значения
- Агрегатная функция
Щелкните правой кнопкой мыши функцию, которую нужно удалить, и выберите пункт Удалить.
В диалоговом окне "Удалить объект" нажмите кнопку "ОК".
Выберите "Показать зависимости" в диалоговом окне "Удалить объект", чтобы открыть диалоговое окно function_nameзависимостей. При этом будут отображены все объекты, зависящие от функции, и все объекты, от которых зависит функция.
Использование Transact-SQL
В Обозреватель объектов подключитесь к экземпляру СУБД.
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.
В следующем примере кода создается определяемая пользователем функция:
-- 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В следующем примере кода удаляется определяемая пользователем функция, созданная в предыдущем примере.
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