RETURN(Transact-SQL)
쿼리나 프로시저를 무조건 종료합니다. RETURN은 즉각적이고 완전하며 프로시저, 일괄 처리, 문 블록에서 아무 때나 종료하는 데 사용할 수 있습니다. RETURN 다음에 있는 문은 실행되지 않습니다.
구문
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 또는 BusinessEntityID가 WA 이외의 값)인 경우 2가 반환됩니다.
USE AdventureWorks2008R2;
GO
CREATE PROCEDURE checkstate @param varchar(11)
AS
IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE BusinessEntityID = @param) = 'WA'
RETURN 1
ELSE
RETURN 2;
GO
다음 예는 checkstate 실행의 반환 상태를 보여 줍니다. 첫 번째 예는 워싱턴의 연락처를 두 번째 예는 워싱턴에 없는 연락처를 세 번째는 유효하지 않은 연락처를 보여 줍니다. @return_status 지역 변수를 선언해야 이를 사용할 수 있습니다.
DECLARE @return_status int;
EXEC @return_status = checkstate '291';
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