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 diversamente indicato, tutte le stored procedure di sistema restituiscono un valore 0 per indicare l'esito positivo dell'operazione. Un valore diverso da zero segnala che si è verificato un 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>.

[!NOTA] L'interpretazione di una stringa vuota (NULL) come spazio singolo o come effettiva stringa vuota dipende dall'impostazione del livello di compatibilità. Se il livello di compatibilità è minore o uguale a 65, le stringhe vuote vengono interpretate da SQL Server 2005 come singoli spazi. Se il livello di compatibilità è uguale a 70, le stringhe vuote vengono interpretate da SQL Server come stringhe vuote. Per ulteriori informazioni, vedere sp_dbcmptlevel (Transact-SQL).

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

Vedere anche

Riferimento

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

Guida in linea e informazioni

Assistenza su SQL Server 2005