다음을 통해 공유


RETURN(Transact-SQL)

쿼리나 프로시저를 무조건 종료합니다. 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> 형식으로 입력해야 합니다.

1. 프로시저에서 반환

다음 예에서는 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;

2. 상태 코드 반환

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

USE AdventureWorks;
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