RETURN (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure

Esce senza condizioni da una query o da una procedura. RETURN è un'istruzione immediata e completa e può essere utilizzata in qualsiasi momento per uscire da una procedura, un batch o un blocco di istruzioni. Le istruzioni che seguono RETURN non vengono eseguite.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

RETURN [ integer_expression ]   

Argomenti

integer_expression
Valore intero restituito. Le stored procedure possono restituire un valore intero a una procedura o applicazione chiamante.

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.

Tipi restituiti

Restituisce facoltativamente int.

Nota

Se non indicato diversamente, tutte le stored procedure di sistema restituiscono il valore 0 ad indicare l'esito positivo e un valore diverso da zero per indicare l'errore.

Osservazioni

Quando viene utilizzata con una stored procedure, l'istruzione RETURN non può restituire un valore Null. Se una procedura tenta di restituire un valore Null, ad esempio quando si utilizza RETURN @status e il parametro @status è NULL, viene visualizzato un messaggio di avviso e restituito il valore 0.

Il valore di stato restituito può essere incluso in istruzioni Transact-SQL successive nel batch o nella procedura che ha eseguito la procedura corrente, ma deve essere immesso nel formato seguente: EXECUTE @return_status = <procedure_name>.

Esempi

R. Uscita da una procedura

Nell'esempio seguente viene illustrato come utilizzare findjobs per uscire da una procedura dopo la visualizzazione di un messaggio all'utente, se viene omesso il parametro del nome utente durante l'esecuzione di RETURN. Se il nome utente viene specificato, i nomi di tutti gli oggetti creati dall'utente nel database corrente vengono recuperati dalle tabelle di sistema appropriate.

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. Restituzione di codici di stato

Nell'esempio seguente viene controllato lo stato dell'ID di un contatto specificato. Se lo stato è Washington (WA), viene restituito il codice di stato 1. In tutti gli altri casi viene restituito 2, ad esempio quando il valore di WA è diverso da StateProvince oppure un valore ContactID non corrisponde a una riga.

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  

Negli esempi seguenti viene illustrato lo stato restituito dall'esecuzione di checkstate. Nel primo esempio viene illustrato il caso di un contatto di Washington, nel secondo il caso di un contatto che non risiede a Washington e nel terzo il caso di un contatto non valido. Per poter utilizzare la variabile locale @return_status, è prima necessario dichiararla.

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

Questo è il set di risultati.

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

Rieseguire la query, specificando un numero di contatto diverso.

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

Questo è il set di risultati.

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

Rieseguire la query, specificando un altro numero di contatto.

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

Questo è il set di risultati.

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

Vedere anche

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