ユーザー定義関数の削除
適用対象: SQL Server
Azure SQL Database
SQL Server では、SQL Server Management Studio または Transact-SQL を使ってユーザー定義関数を削除 (ドロップ) できます。
制限事項と制約事項
データベース内に、この関数を参照し SCHEMABINDING を使って作成された Transact-SQL 関数またはビューがある場合、または、この関数を参照する計算列、CHECK 制約、DEFAULT 制約がある場合、関数は削除できません。
この関数を参照し、インデックスが作成された計算列がある場合、関数の削除はできません。
アクセス許可
関数が属しているスキーマに対する ALTER 権限、または関数に対する CONTROL 権限が必要です。
SQL Server Management Studio を使用します。
変更する関数を含むデータベースの横にあるプラス記号を選択します。
Programmability フォルダーの横にあるプラス記号を選択します。
変更する次の関数を含むフォルダーの横にあるプラス記号を選択します。
- Table-valued Function
- スカラー値関数
- 集計関数
削除する関数を右クリックして、 [削除]をクリックします。
[オブジェクトの削除] ダイアログ ボックスで [OK]を選択します。
[オブジェクトの削除] ダイアログ ボックスで [依存関係の表示] を選択して [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