저장 프로시저 수정Modify a Stored Procedure

이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스예Azure SQL 데이터 웨어하우스 예 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

SQL Server 2017SQL Server 2017 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 Transact-SQLTransact-SQL의 저장 프로시저를 수정하는 방법에 대해 설명합니다.This topic describes how to modify a stored procedure in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

시작하기 전에Before You Begin

제한 사항Limitations and Restrictions

Transact-SQLTransact-SQL 저장 프로시저를 CLR 저장 프로시저로 수정할 수 없으며 그 반대의 경우도 마찬가지입니다. stored procedures cannot be modified to be CLR stored procedures and vice versa.

이전 프로시저 정의가 WITH ENCRYPTION 또는 WITH RECOMPILE을 사용하여 만들어진 경우 이러한 옵션은 ALTER PROCEDURE 문에 포함된 경우에만 활성화됩니다.If the previous procedure definition was created using WITH ENCRYPTION or WITH RECOMPILE, these options are enabled only if they are included in the ALTER PROCEDURE statement.

보안Security

사용 권한Permissions

프로시저에 대한 ALTER PROCEDURE 권한이 필요합니다.Requires ALTER PROCEDURE permission on the procedure.

저장 프로시저 수정 방법How to Modify a Stored Procedure

다음 중 하나를 사용할 수 있습니다.You can use one of the following:

SQL Server Management Studio 사용Using SQL Server Management Studio

Management Studio의 프로시저를 수정하려면To modify a procedure in Management Studio

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine and then expand that instance.

  2. 데이터베이스를 확장하고 해당 프로시저가 속한 데이터베이스를 확장한 다음 프로그래밍 기능을 확장합니다.Expand Databases, expand the database in which the procedure belongs, and then expand Programmability.

  3. 저장 프로시저를 확장하고 수정할 프로시저를 마우스 오른쪽 단추로 클릭한 다음 수정을 클릭합니다.Expand Stored Procedures, right-click the procedure to modify, and then click Modify.

  4. 저장 프로시저의 텍스트를 수정합니다.Modify the text of the stored procedure.

  5. 구문을 테스트하려면 쿼리 메뉴에서 구문 분석을 클릭합니다.To test the syntax, on the Query menu, click Parse.

  6. 프로시저 정의의 수정 내용을 저장하려면 쿼리 메뉴에서 실행을 클릭합니다.To save the modifications to the procedure definition, on the Query menu, click Execute.

  7. Transact-SQLTransact-SQL 스크립트로 업데이트된 프로시저 정의를 저장하려면 파일 메뉴에서 다른 이름으로 저장을 클릭합니다.To save the updated procedure definition as a Transact-SQLTransact-SQL script, on the File menu, click Save As. 해당 파일 이름을 적용하거나 새 이름으로 바꾼 다음 저장을 클릭합니다.Accept the file name or replace it with a new name, and then click Save.

중요

모든 사용자 입력에 대해 유효성을 검사합니다.Validate all user input. 유효성 검사를 수행하기 전에는 사용자 입력을 연결하지 마세요.Do not concatenate user input before you validate it. 유효성 검사가 수행되지 않은 사용자 입력으로부터 생성된 명령은 실행하지 마세요.Never execute a command constructed from unvalidated user input.

Transact-SQL 사용Using Transact-SQL

쿼리 편집기에서 프로시저를 변경하려면To modify a procedure in Query Editor

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine and then expand that instance.

  2. 데이터베이스를 확장하고 프로시저가 속한 데이터베이스를 확장합니다.Expand Databases, expand the database in which the procedure belongs. 또는 도구 모음의 사용 가능한 데이터베이스 목록에서 데이터베이스를 선택합니다.Or, from the tool bar, select the database from the list of available databases. 이 예에서는 AdventureWorks2012AdventureWorks2012 데이터베이스를 사용합니다.For this example, select the AdventureWorks2012AdventureWorks2012 database.

  3. 파일 메뉴에서 새 쿼리를 클릭합니다.On the File menu, click New Query.

  4. 다음 예를 복사하여 쿼리 편집기에 붙여 넣습니다.Copy and paste the following example into the query editor. 이 예에서는 uspVendorAllInfo 데이터베이스의 모든 공급업체 이름, 해당 공급업체가 공급하는 제품, 신용 등급 및 사용 가능성을 반환하는 Adventure Works CyclesAdventure Works Cycles 프로시저를 만듭니다.The example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    
    IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL   
        DROP PROCEDURE Purchasing.uspVendorAllInfo;  
    GO  
    CREATE PROCEDURE Purchasing.uspVendorAllInfo  
    WITH EXECUTE AS CALLER  
    AS  
        SET NOCOUNT ON;  
        SELECT v.Name AS Vendor, p.Name AS 'Product name',   
          v.CreditRating AS 'Rating',   
          v.ActiveFlag AS Availability  
        FROM Purchasing.Vendor v   
        INNER JOIN Purchasing.ProductVendor pv  
          ON v.BusinessEntityID = pv.BusinessEntityID   
        INNER JOIN Production.Product p  
          ON pv.ProductID = p.ProductID   
        ORDER BY v.Name ASC;  
    GO  
    
  5. 파일 메뉴에서 새 쿼리를 클릭합니다.On the File menu, click New Query.

  6. 다음 예를 복사하여 쿼리 편집기에 붙여 넣습니다.Copy and paste the following example into the query editor. 다음 예에서는 uspVendorAllInfo 프로시저를 변경합니다.The example modifies the uspVendorAllInfo procedure. EXECUTE AS CALLER 절이 제거되고 지정된 제품을 제공하는 공급업체만 반환하도록 프로시저 본문이 수정됩니다.The EXECUTE AS CALLER clause is removed and the body of the procedure is modified to return only those vendors that supply the specified product. LEFTCASE 함수는 결과 집합의 모양을 사용자 지정합니다.The LEFT and CASE functions customize the appearance of the result set.

    ALTER PROCEDURE Purchasing.uspVendorAllInfo  
        @Product varchar(25)   
    AS  
        SET NOCOUNT ON;  
        SELECT LEFT(v.Name, 25) AS Vendor, LEFT(p.Name, 25) AS 'Product name',   
        'Rating' = CASE v.CreditRating   
            WHEN 1 THEN 'Superior'  
            WHEN 2 THEN 'Excellent'  
            WHEN 3 THEN 'Above average'  
            WHEN 4 THEN 'Average'  
            WHEN 5 THEN 'Below average'  
            ELSE 'No rating'  
            END  
        , Availability = CASE v.ActiveFlag  
            WHEN 1 THEN 'Yes'  
            ELSE 'No'  
            END  
        FROM Purchasing.Vendor AS v   
        INNER JOIN Purchasing.ProductVendor AS pv  
          ON v.BusinessEntityID = pv.BusinessEntityID   
        INNER JOIN Production.Product AS p   
          ON pv.ProductID = p.ProductID   
        WHERE p.Name LIKE @Product  
        ORDER BY v.Name ASC;  
    GO  
    
  7. 프로시저 정의의 수정 내용을 저장하려면 쿼리 메뉴에서 실행을 클릭합니다.To save the modifications to the procedure definition, on the Query menu, click Execute.

  8. Transact-SQLTransact-SQL 스크립트로 업데이트된 프로시저 정의를 저장하려면 파일 메뉴에서 다른 이름으로 저장을 클릭합니다.To save the updated procedure definition as a Transact-SQLTransact-SQL script, on the File menu, click Save As. 해당 파일 이름을 적용하거나 새 이름으로 바꾼 다음 저장을 클릭합니다.Accept the file name or replace it with a new name, and then click Save.

  9. 변경된 저장 프로시저를 실행하려면 다음 예시를 실행합니다.To run the modified stored procedure, execute the following example.

    EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';  
    GO  
    

참고 항목See Also

ALTER PROCEDURE(Transact-SQL)ALTER PROCEDURE (Transact-SQL)