RETURN (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure 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.
Convenzioni relative alla 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.
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 AdventureWorks2022;
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
Il set di risultati è il seguente.
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
Il set di risultati è il seguente.
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
Il set di risultati è il seguente.
Return Status
-------------
2
Vedi 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)