RETURN (Transact-SQL)

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 argomentoConvenzioni della sintassi Transact-SQL

Sintassi

RETURN [ integer_expression ] 

Argomenti

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

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

A. Uscita da una procedura

Nell'esempio seguente viene illustrato come utilizzare RETURN 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 findjobs. 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 StateProvince è diverso da WA oppure un valore ContactID non corrisponde a una riga.

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

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

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

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

Set di risultati:

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