Compartir a través de


RETURN (Transact-SQL)

Sale incondicionalmente de una consulta o procedimiento. RETURN es inmediata y completa, y se puede utilizar en cualquier punto para salir de un procedimiento, lote o bloque de instrucciones. Las instrucciones que siguen a RETURN no se ejecutan.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

RETURN [ integer_expression ] 

Argumentos

integer_expression

Es el valor entero que se devuelve. Los procedimientos almacenados pueden devolver un valor entero al procedimiento que realiza la llamada o a una aplicación.

Tipos de valor devueltos

Opcionalmente devuelve int.

[!NOTA] A menos que se especifique lo contrario, todos los procedimientos almacenados del sistema devuelven el valor 0. Esto indica que son correctos y un valor distinto de cero indica que se ha producido un error.

Notas

Cuando se utiliza con un procedimiento almacenado, RETURN no puede devolver un valor NULL. Si un procedimiento intenta devolver un valor NULL (por ejemplo, al utilizar RETURN @status si @status es NULL), se genera un mensaje de advertencia y se devuelve un valor 0.

El valor del estado de devolución se puede incluir en las siguientes instrucciones Transact-SQL del lote o procedimiento que ha ejecutado el procedimiento actual, pero se debe escribir de la forma siguiente: EXECUTE @return_status = <procedure_name>.

[!NOTA] La configuración del nivel de compatibilidad determina si una cadena vacía (NULL) se interpreta como un espacio o como una cadena vacía auténtica. Si el nivel de compatibilidad es menor o igual que 65, SQL Server 2005 interpreta las cadenas vacías como espacios. Si el nivel de compatibilidad es igual a 70, SQL Server interpreta las cadenas vacías como cadenas vacías. Para obtener más información, vea sp_dbcmptlevel (Transact-SQL).

Ejemplos

A. Retorno de un procedimiento

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. 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.

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. Devolver códigos de estado

En el siguiente ejemplo se comprueba el estado del Id. de un contacto especificado. Si el estado es Washington (WA), se devuelve un estado de 1. 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).

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

En los siguientes ejemplos se muestra el estado devuelto al ejecutar 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. Se debe declarar la variable local @return_status para poder utilizarla.

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

Éste es el conjunto de resultados. 

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

Ejecute la consulta de nuevo con un número de contacto diferente.

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

Éste es el conjunto de resultados. 

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

Ejecute la consulta de nuevo con otro número de contacto.

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

Éste es el conjunto de resultados. 

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

Vea también

Referencia

ALTER PROCEDURE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
EXECUTE (Transact-SQL)
SET @local\_variable (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005