다음을 통해 공유


사용자 정의 함수 삭제

적용 대상: SQL Server Azure SQL 데이터베이스

SQL Server에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 사용자 정의 함수를 삭제할 수 있습니다.

제한 사항

  • 데이터베이스에 이 함수를 참조하고 SCHEMABINDING을 사용하여 만든 Transact-SQL 함수나 뷰가 있거나 해당 함수를 참조하는 계산 열, CHECK 제약 조건 또는 DEFAULT 제약 조건이 있는 경우 해당 함수를 삭제할 수 없습니다.

  • 이 함수를 참조하고 인덱싱된 계산 열이 있는 경우 해당 함수를 삭제할 수 없습니다.

사용 권한

함수가 속한 스키마에 대한 ALTER 권한 또는 함수에 대한 CONTROL 권한이 필요합니다.

SQL Server Management Studio 사용

  1. 수정할 함수가 포함된 데이터베이스 옆에 있는 더하기 기호를 선택합니다.

  2. Programmability 폴더 옆의 더하기 기호를 선택합니다.

  3. 수정할 함수가 포함된 폴더 옆에 있는 더하기 기호를 선택합니다.

    • 테이블 반환 함수
    • 스칼라 반환 함수
    • Aggregate 함수
  4. 삭제할 함수를 마우스 오른쪽 단추로 클릭하고 삭제를 선택합니다.

  5. 개체 삭제 대화 상자에서 확인을 선택합니다.

    개체 삭제 대화 상자에서 종속성 표시를 선택하여 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
    

참고 항목