다음을 통해 공유


저장 프로시저 만들기

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

이 문서에서는 SQL Server Management Studio 및 Transact-SQL CREATE PROCEDURE 문을 사용하여 SQL Server 저장 프로시저를 만드는 방법을 설명합니다.

사용 권한

데이터베이스의 CREATE PROCEDURE 권한과 프로시저를 만들 스키마에 대한 ALTER 권한이 필요합니다.

저장 프로시저 만들기

SSMS 쿼리 창에서 SSMS(SQL Server Management Studio) 사용자 인터페이스나 Transact-SQL을 사용하여 저장 프로시저를 만들 수 있습니다. 항상 최신 버전의 SSMS 사용하세요.

참고 항목

이 문서의 저장 프로시저 예제에서는 샘플 AdventureWorksLT2022(SQL Server) 또는 AdventureWorksLT(Azure SQL 데이터베이스) 데이터베이스를 사용합니다. AdventureWorksLT 샘플 데이터베이스를 가져오고 사용하는 방법은 AdventureWorks 샘플 데이터베이스를 참조하세요.

SQL Server Management Studio 사용

SSMS에 저장 프로시저를 만들려면 다음을 수행합니다.

  1. 개체 탐색기에서 SQL Server 또는 Azure SQL 데이터베이스의 인스턴스에 연결합니다.

    자세한 내용은 다음 빠른 시작을 참조하세요.

  2. 인스턴스를 확장한 다음, 데이터베이스를 확장합니다.

  3. 원하는 데이터베이스를 확장한 다음, 프로그래밍 기능을 확장합니다.

  4. 저장 프로시저를 마우스 오른쪽 단추로 클릭한 다음, 새로 만들기>저장 프로시저를 클릭합니다. 저장 프로시저 템플릿이 있는 새 쿼리 창이 열립니다.

    기본 저장 프로시저 템플릿에는 매개 변수 2개가 있습니다. 저장 프로시저에 매개 변수가 적거나 더 많거나 없는 경우 템플릿에서 매개 변수 줄을 적절하게 추가하거나 제거합니다.

  5. 쿼리 메뉴에서 템플릿 매개 변수 값 지정을 선택합니다.

  6. 템플릿 매개 변수 값 지정 대화 상자에서 필드에 다음 정보를 입력합니다.

    • 작성자: Name을 본인 이름으로 바꿉니다.
    • 만든 날짜: 오늘 날짜를 입력합니다.
    • 설명: 프로시저에서 수행하는 작업을 간략하게 설명합니다.
    • Procedure_Name: ProcedureName을 새 저장 프로시저 이름으로 바꿉니다.
    • @Param1: @p1을 첫 번째 매개 변수 이름으로 바꿉니다(예: @ColumnName1).
    • @Datatype_For_Param1: 적절하게 int를 첫 번째 매개 변수 데이터 형식으로 바꿉니다(예: nvarchar(50)).
    • Default_Value_For_Param1: 적절하게 0을 첫 번째 매개 변수 기본값이나 NULL로 바꿉니다.
    • @Param2: @p2를 두 번째 매개 변수 이름으로 바꿉니다(예: @ColumnName2).
    • @Datatype_For_Param2: 적절하게 int를 두 번째 매개 변수 데이터 형식으로 바꿉니다(예: nvarchar(50)).
    • Default_Value_For_Param2: 적절하게 0을 두 번째 매개 변수 기본값이나 NULL로 바꿉니다.

    다음 스크린샷에서는 예제 저장 프로시저의 완료된 대화 상자를 보여줍니다.

    템플릿 매개 변수에 대한 값 지정 완료 대화 상자를 보여 주는 스크린샷

  7. 확인을 선택합니다.

  8. 쿼리 편집기에서 SELECT 문을 프로시저에 대한 쿼리로 바꿉니다.

    다음 코드에서는 예제 저장 프로시저의 완성된 CREATE PROCEDURE 문을 보여줍니다.

    -- =======================================================
    -- Create Stored Procedure Template for Azure SQL Database
    -- =======================================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:      My Name
    -- Create Date: 01/23/2024
    -- Description: Returns the customer's company name.
    -- =============================================
    CREATE PROCEDURE SalesLT.uspGetCustomerCompany
    (
        -- Add the parameters for the stored procedure here
        @LastName nvarchar(50) = NULL,
        @FirstName nvarchar(50) = NULL
    )
    AS
    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON
    
        -- Insert statements for procedure here
        SELECT FirstName, LastName, CompanyName
           FROM SalesLT.Customer
           WHERE FirstName = @FirstName AND LastName = @LastName;
    END
    GO
    
  9. 구문을 테스트하려면 쿼리 메뉴에서 구문 분석을 선택합니다. 오류를 수정합니다.

  10. 툴바에서 실행을 선택합니다. 프로시저가 데이터베이스 개체로 만들어집니다.

  11. 개체 탐색기에 나열된 새 프로시저를 보려면 저장 프로시저를 마우스 오른쪽 단추로 클릭하고 새로 고침을 선택합니다.

프로시저를 실행하려면 다음을 수행합니다.

  1. 개체 탐색기에서 저장 프로시저 이름을 마우스 오른쪽 단추로 클릭하고 저장 프로시저 실행을 선택합니다.

  2. 프로시저 실행 창에서 모든 매개 변수 값을 입력한 다음, 확인을 선택합니다. 자세한 내용은 저장 프로시저 실행을 참조하세요.

    예를 들어 SalesLT.uspGetCustomerCompany 샘플 프로시저를 실행하려면 @LastName 매개 변수에 Cannon을 입력하고 @FirstName 매개 변수에 Chris를 입력한 다음, 확인을 선택합니다. 저장 프로시저가 실행되고 FirstName Chris, LastName CannonCompanyName 야외 스포츠 용품을 반환합니다.

Important

모든 사용자 입력에 대해 유효성을 검사합니다. 확인하기 전에는 사용자 입력을 연결하지 마세요. 유효성 검사가 수행되지 않은 사용자 입력으로부터 생성된 명령은 실행하지 마세요.

Transact-SQL 사용

SSMS 쿼리 편집기에서 프로시저를 만들려면 다음을 수행합니다.

  1. 개체 탐색기에서 SQL Server 또는 Azure SQL 데이터베이스의 인스턴스에 연결합니다.

  2. 툴바에서 새 쿼리를 선택합니다.

  3. 쿼리 창에 다음 코드를 입력하여 <ProcedureName>을 매개 변수의 이름과 데이터 형식으로 바꾸고 SELECT 문을 고유한 값으로 바꿉니다.

    CREATE PROCEDURE <ProcedureName>
       @<ParameterName1> <data type>,
       @<ParameterName2> <data type>
    AS   
    
       SET NOCOUNT ON;
       SELECT <your SELECT statement>;
    GO
    

    예를 들어 다음 문은 약간 다른 프로시저 이름을 사용하여 AdventureWorksLT 데이터베이스에 이전 예제와 같은 저장 프로시저를 만듭니다.

    CREATE PROCEDURE SalesLT.uspGetCustomerCompany1
        @LastName nvarchar(50),
        @FirstName nvarchar(50)
    AS   
    
        SET NOCOUNT ON;
        SELECT FirstName, LastName, CompanyName
        FROM SalesLT.Customer
        WHERE FirstName = @FirstName AND LastName = @LastName;
    GO
    
  4. 툴바에서 실행을 선택하여 쿼리를 실행합니다. 저장 프로시저가 생성됩니다.

  5. 저장 프로시저를 실행하려면 새 쿼리 창에 EXECUTE 문을 입력하고 매개 변수 값을 입력한 다음, 실행을 선택합니다. 자세한 내용은 저장 프로시저 실행을 참조하세요.