Удаление определяемых пользователем функций
Область применения:SQL ServerAzure SQL Database
Вы можете удалить пользовательские функции в SQL Server с помощью SQL Server Management Studio или Transact-SQL.
ограничения
Вы не сможете удалить функцию, если в базе данных есть функции Transact-SQL или представления, ссылающиеся на эту функцию и созданные с помощью SCHEMABINDING, или если вычисляются столбцы, ограничения CHECK или ограничения DEFAULT, ссылающиеся на функцию.
Вы не сможете удалить функцию, если есть вычисляемые столбцы, ссылающиеся на эту функцию и индексированные.
Разрешения
Необходимо разрешение ALTER на схему, которой принадлежит функция, или разрешение CONTROL на функцию.
Использование среды SQL Server Management Studio
Выберите знак плюса рядом с базой данных, содержащей функцию, которую вы хотите изменить.
Выберите знак плюса рядом с папкой Programmability .
Выберите знак плюса рядом с папкой, содержащей функцию, которую вы хотите изменить:
- Table-valued Function
- Скалярная функция
- Агрегатная функция
Щелкните правой кнопкой мыши функцию, которую нужно удалить, и выберите пункт Удалить.
В диалоговом окне "Удалить объект" нажмите кнопку "ОК".
Выберите "Показать зависимости" в диалоговом окне "Удалить объект", чтобы открыть диалоговое окно 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
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по