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