다음을 통해 공유


RETURN(Transact-SQL)

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

쿼리나 프로시저를 무조건 종료합니다. RETURN은 즉각적이고 완전하며 프로시저, 일괄 처리, 문 블록에서 아무 때나 종료하는 데 사용할 수 있습니다. RETURN 다음에 있는 문은 실행되지 않습니다.

Transact-SQL 구문 표기 규칙

구문

RETURN [ integer_expression ]   

인수

integer_expression
반환되는 정수 값입니다. 저장 프로시저는 호출 프로시저나 애플리케이션에 정수 값을 반환할 수 있습니다.

반환 형식

int를 선택적으로 반환합니다.

참고

달리 설명하지 않는 한 모든 시스템 저장 프로시저는 0 값을 반환합니다. 이 값은 성공을 나타내며 0 이외의 값은 실패를 나타냅니다.

설명

저장 프로시저와 함께 사용할 경우 RETURN은 null 값을 반환할 수 없습니다. 프로시저에서 Null 값을 반환하려는 경우(예: @status가 NULL일 때 RETURN @status 사용) 경고 메시지가 생성되고 값 0이 반환됩니다.

현재 프로시저를 실행한 일괄 처리나 프로시저에 있는 후속 Transact-SQL 문에 반환 상태 값을 포함시킬 수 있지만 EXECUTE @return_status = <procedure_name> 형식으로 입력해야 합니다.

예제

A. 프로시저에서 반환

다음 예에서는 findjobs를 실행할 때 매개 변수로 사용자 이름을 지정하지 않은 경우 RETURN으로 사용자의 화면에 메시지를 보낸 다음 프로시저를 종료하는 방법을 보여 줍니다. 사용자 이름을 지정하면 현재 데이터베이스에서 이 사용자가 만든 모든 개체 이름을 해당 시스템 테이블에서 가져옵니다.

CREATE PROCEDURE findjobs @nm sysname = NULL  
AS   
IF @nm IS NULL  
    BEGIN  
        PRINT 'You must give a user name'  
        RETURN  
    END  
ELSE  
    BEGIN  
        SELECT o.name, o.id, o.uid  
        FROM sysobjects o INNER JOIN master..syslogins l  
            ON o.uid = l.sid  
        WHERE l.name = @nm  
    END;  

B. 상태 코드 반환

다음 예에서는 지정된 연락처 ID의 주를 확인하는 방법을 보여 줍니다. 주가 워싱턴(WA)인 경우 1이 반환됩니다. 그 외 다른 조건(2 또는 WAStateProvince 이외의 값)인 경우 ContactID가 반환됩니다.

USE AdventureWorks2022;  
GO  
CREATE PROCEDURE checkstate @param VARCHAR(11)  
AS  
IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE ContactID = @param) = 'WA'  
    RETURN 1  
ELSE  
    RETURN 2;  
GO  

다음 예는 checkstate 실행의 반환 상태를 보여 줍니다. 첫 번째 예는 워싱턴의 연락처를 두 번째 예는 워싱턴에 없는 연락처를 세 번째는 유효하지 않은 연락처를 보여 줍니다. @return_status 지역 변수를 선언해야 이를 사용할 수 있습니다.

DECLARE @return_status INT;  
EXEC @return_status = checkstate '2';  
SELECT 'Return Status' = @return_status;  
GO  

결과 집합은 다음과 같습니다.

Return Status 
 
------------- 
 
1

다른 연락처를 지정하여 쿼리를 다시 실행합니다.

DECLARE @return_status INT;  
EXEC @return_status = checkstate '6';  
SELECT 'Return Status' = @return_status;  
GO  

결과 집합은 다음과 같습니다.

Return Status  
-------------  
 
2

또 다른 연락처를 지정하여 쿼리를 다시 실행합니다.

DECLARE @return_status INT  
EXEC @return_status = checkstate '12345678901';  
SELECT 'Return Status' = @return_status;  
GO  

결과 집합은 다음과 같습니다.

Return Status  
-------------  
 
2

참고 항목

ALTER PROCEDURE(Transact-SQL)
CREATE PROCEDURE(Transact-SQL)
DECLARE @local_variable (Transact-SQL)
EXECUTE(Transact-SQL)
SET @local_variable (Transact-SQL)
THROW(Transact-SQL)