ユーザー定義関数の削除

適用対象:SQL ServerAzure SQL Database

SQL Server では、SQL Server Management Studio または Transact-SQL を使ってユーザー定義関数を削除 (ドロップ) できます。

制限事項と制約事項

  • データベース内に、この関数を参照し SCHEMABINDING を使って作成された Transact-SQL 関数またはビューがある場合、または、この関数を参照する計算列、CHECK 制約、DEFAULT 制約がある場合、関数は削除できません。

  • この関数を参照し、インデックスが作成された計算列がある場合、関数の削除はできません。

アクセス許可

関数が属しているスキーマに対する ALTER 権限、または関数に対する CONTROL 権限が必要です。

SQL Server Management Studio の使用 [SQL Server]

  1. 変更する関数を含むデータベースの横にあるプラス記号を選択します。

  2. Programmability フォルダーの横にあるプラス記号を選択します。

  3. 変更する次の関数を含むフォルダーの横にあるプラス記号を選択します。

    • Table-valued Function
    • スカラー値関数
    • 集計関数
  4. 削除する関数を右クリックして、 [削除]をクリックします。

  5. [オブジェクトの削除] ダイアログ ボックスで [OK]を選択します。

    [オブジェクトの削除] ダイアログ ボックスの [依存関係の表示] を選択して [function_name の依存関係] ダイアログ ボックスを開きます。 関数に依存するすべてのオブジェクトと、関数が依存するすべてのオブジェクトが表示されます。

Transact-SQL の使用

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。

    次のコード サンプルでは、ユーザー定義関数を作成します。

    -- 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
    

関連項目