Restituzione di dati utilizzando i parametri OUTPUT
Se si specifica la parola chiave OUTPUT per un parametro nella definizione della procedura, la stored procedure può restituire il valore corrente del parametro al programma che ha eseguito la chiamata al termine dell'esecuzione della stored procedure stessa. Per salvare il valore del parametro in una variabile che possa essere utilizzata nel programma che ha eseguito la chiamata, tale programma deve inoltre utilizzare la parola chiave OUTPUT durante l'esecuzione della stored procedure.
Esempi
Nell'esempio seguente viene illustrata una stored procedure con un parametro di input e uno di output. Il primo parametro nella stored procedure @SalesPerson
riceve il valore di input specificato dal programma che ha eseguito la chiamata e il secondo parametro @SalesYTD
viene utilizzato per restituire il valore a tale programma. L'istruzione SELECT utilizza il parametro @SalesPerson
per ottenere il valore SalesYTD
corretto e assegna il valore al parametro di output @SalesYTD
.
USE AdventureWorks;
GO
IF OBJECT_ID('Sales.uspGetEmployeeSalesYTD', 'P') IS NOT NULL
DROP PROCEDURE Sales.uspGetEmployeeSalesYTD;
GO
CREATE PROCEDURE Sales.uspGetEmployeeSalesYTD
@SalesPerson nvarchar(50),
@SalesYTD money OUTPUT
AS
SET NOCOUNT ON;
SELECT @SalesYTD = SalesYTD
FROM Sales.SalesPerson AS sp
JOIN HumanResources.vEmployee AS e ON e.EmployeeID = sp.SalesPersonID
WHERE LastName = @SalesPerson;
RETURN
GO
Tramite le istruzioni seguenti viene eseguita la stored procedure con un valore per il parametro di input e il valore di output della stored procedure viene salvato nella variabile @SalesYTD
locale rispetto al programma che ha eseguito la chiamata.
-- Declare the variable to receive the output value of the procedure.
DECLARE @SalesYTDBySalesPerson money;
-- Execute the procedure specifying a last name for the input parameter
-- and saving the output value in the variable @SalesYTDBySalesPerson
EXECUTE Sales.uspGetEmployeeSalesYTD
N'Blythe', @SalesYTD = @SalesYTDBySalesPerson OUTPUT;
-- Display the value returned by the procedure.
PRINT 'Year-to-date sales for this employee is ' +
convert(varchar(10),@SalesYTDBySalesPerson);
GO
È inoltre possibile specificare valori di input per i parametri OUTPUT quando la stored procedure viene eseguita. Questa operazione consente alla stored procedure di ricevere un valore dal programma che ha eseguito la chiamata, modificarlo o utilizzarlo per eseguire operazioni e quindi restituire il nuovo valore al programma che ha eseguito la chiamata. Nell'esempio precedente è possibile assegnare un valore alla variabile @SalesYTDBySalesPerson
prima di eseguire la stored procedure. La variabile @SalesYTD
include il valore del parametro nel corpo della stored procedure e il valore della variabile @SalesYTD
viene restituito al programma che ha eseguito la chiamata al termine dell'esecuzione della stored procedure. Questa funzionalità viene in genere denominata "funzionalità di passaggio per riferimento".
Se si specifica OUTPUT per un parametro quando si esegue una stored procedure e il parametro non è stato definito utilizzando OUTPUT nella stored procedure, viene restituito un messaggio di errore. È possibile eseguire una stored procedure con i parametri OUTPUT e non specificare OUTPUT in fase di esecuzione della stored procedure. Non viene restituito alcun errore, ma non è possibile utilizzare il valore di output nel programma che ha eseguito la chiamata.
Vedere anche
Concetti
Restituzione di dati utilizzando un codice restituito
Utilizzo del tipo di dati cursor in un parametro OUTPUT
Altre risorse
EXECUTE (Transact-SQL)
Restituzione di dati da una stored procedure
DECLARE @local\_variable (Transact-SQL)
PRINT (Transact-SQL)
SET @local\_variable (Transact-SQL)