RETURN (Transact-SQL)RETURN (Transact-SQL)

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL DatabaseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

Sale incondicionalmente de una consulta o procedimiento.Exits unconditionally from a query or procedure. RETURN es inmediata y completa, y se puede utilizar en cualquier punto para salir de un procedimiento, lote o bloque de instrucciones.RETURN is immediate and complete and can be used at any point to exit from a procedure, batch, or statement block. Las instrucciones que siguen a RETURN no se ejecutan.Statements that follow RETURN are not executed.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

  
RETURN [ integer_expression ]   

ArgumentosArguments

integer_expressioninteger_expression
Es el valor entero que se devuelve.Is the integer value that is returned. Los procedimientos almacenados pueden devolver un valor entero al procedimiento que realiza la llamada o a una aplicación.Stored procedures can return an integer value to a calling procedure or an application.

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

Tipos de valor devueltoReturn Types

Devuelve opcionalmente int.Optionally returns int.

Nota

A menos que se documente de otra manera, todos los procedimientos almacenados del sistema devuelven el valor 0.Unless documented otherwise, all system stored procedures return a value of 0. Esto indica que son correctos y un valor distinto de cero indica que se ha producido un error.This indicates success and a nonzero value indicates failure.

ObservacionesRemarks

Cuando se utiliza con un procedimiento almacenado, RETURN no puede devolver un valor NULL.When used with a stored procedure, RETURN cannot return a null value. Si un procedimiento intenta devolver un valor NULL (por ejemplo, al utilizar RETURN @status cuando @status es NULL), se genera un mensaje de advertencia y se devuelve un valor 0.If a procedure tries to return a null value (for example, using RETURN @status when @status is NULL), a warning message is generated and a value of 0 is returned.

El valor de estado devuelto se puede incluir en las siguientes instrucciones Transact-SQLTransact-SQL del lote o procedimiento que ha ejecutado el procedimiento actual, pero se debe escribir de la forma siguiente: EXECUTE @return_status = <procedure_name>.The return status value can be included in subsequent Transact-SQLTransact-SQL statements in the batch or procedure that executed the current procedure, but it must be entered in the following form: EXECUTE @return_status = <procedure_name>.

EjemplosExamples

A.A. Devolver desde un procedimientoReturning from a procedure

En el siguiente ejemplo se muestra que si no se proporciona ningún nombre de usuario como parámetro al ejecutar findjobs, RETURN provoca la salida del procedimiento tras enviar un mensaje a la pantalla del usuario.The following example shows if no user name is specified as a parameter when findjobs is executed, RETURN causes the procedure to exit after a message has been sent to the user's screen. Si se especifica un nombre de usuario, se obtienen de las tablas del sistema adecuadas los nombres de todos los objetos creados por este usuario en la base de datos actual.If a user name is specified, the names of all objects created by this user in the current database are retrieved from the appropriate system tables.

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.B. Devolver códigos de estadoReturning status codes

En el siguiente ejemplo se comprueba el estado del Id. de un contacto especificado.The following example checks the state for the ID of a specified contact. Si el estado es Washington (WA), se devuelve un estado de 1.If the state is Washington (WA), a status of 1 is returned. En caso contrario, se devuelve 2 para cualquier otra condición (un valor distinto de WA para StateProvince o ContactID que no coincida con una fila).Otherwise, 2 is returned for any other condition (a value other than WA for StateProvince or ContactID that did not match a row).

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

En los siguientes ejemplos se muestra el estado devuelto al ejecutar checkstate.The following examples show the return status from executing checkstate. En el primer ejemplo se muestra un contacto en Washington, en el segundo ejemplo un contacto distinto de Washington y en el tercer ejemplo un contacto no válido.The first shows a contact in Washington; the second, contact not in Washington; and the third, a contact that is not valid. Se debe declarar la variable local @return_status para poder utilizarla.The @return_status local variable must be declared before it can be used.

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

El conjunto de resultados es el siguiente:Here is the result set.

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

Ejecute la consulta de nuevo con un número de contacto diferente.Execute the query again, specifying a different contact number.

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

El conjunto de resultados es el siguiente:Here is the result set.

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

Ejecute la consulta de nuevo con otro número de contacto.Execute the query again, specifying another contact number.

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

El conjunto de resultados es el siguiente:Here is the result set.

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

Consulte tambiénSee Also

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